[MOD] Простые глобальные объявления

Здесь авторы могут постить бета-версии своих модификаций для phpBB 3.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

[MOD] Простые глобальные объявления

Сообщение МайскийЖук »

Вам когда-нибудь требовалось известить о чем-то пользователей вашего форума без создания темы на форуме с глобальным объявлением? Отличный способ сделать это — создать простейшее разноцветное сообщение в заголовке форума, которое пользователь может прочесть и закрыть, нажав на крестик.
 
 
Чего мы пытаемся достичь?

Нам нужно простейшее сообщение в заголовке форума. Вам, как администратору форума, наверняка не раз было нужно известить пользователей форума о чем-то важном. Например, временная недоступность форума, изменения в правилах форума, новые установленные на форуме моды и т.д. Тема, созданная на форуме как глобальное объявление, не всегда удовлетворяет этим нуждам. Вместо создания такой темы можно использовать цветное сообщение в заголовке форума, которое будет отлично видно каждому пользователю форума и сразу же привлечет к себе внимание. Пользователь имеет возможность закрыть это сообщение, и больше оно для данного пользователя отображаться не будет.
 
 
Подготовка.

Для начала вам, конечно же, нужен любой текстовый редактор, поддерживающий редактирование файлов в кодировке UTF-8 без BOM. Еще вам понадобится архивчик, содержащий картинки, изображающие крестик, используемый для закрытия глобального объявления, а так же файл, ответственный за хранение информации о просмотре объявления.
global-notices.rar
Шаг 1. Редактирование HTML.

Первым делом нам надо задействовать jQuery, а после этого прописать глобальное объявление.

Открываем /styles/prosilver/template/overall_header.html. Находим:

Код: Выделить всё

<script type="text/javascript" src="{T_TEMPLATE_PATH}/forum_fn.js"></script>
Ниже добавляем:

Код: Выделить всё

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" src="{T_TEMPLATE_PATH}/jquery.cookie.js"></script>
Лично я скачал файл jquery.min.js и скопировал его в ту же папку, где лежит файл jquery.cookie.js, чтобы каждый раз не тянуть его заново с сайта Гоогла. Но это как кому нравится.
 
 
Объявление в самом верху форума.

Все в том же файле /styles/prosilver/template/overall_header.html находим:

Код: Выделить всё

<body id="phpbb" class="section-{SCRIPT_NAME} {S_CONTENT_DIRECTION}">
И добавляем ниже:

Код: Выделить всё

<div class="global-notice notice-top green">
    <strong>Внимание:</strong> это глобальное объявление о таком-то событии.
    <a class="cross" href="#">Закрыть</a>
</div>
Как вы сами понимаете, текст данного глобального объявления придется каждый раз менять вручную в зависимости от того события, о котором вы хотите известить пользователей форума.

Изображение
 
 
Объявление под шапкой форума.

И снова в файле /styles/prosilver/template/overall_header.html находим:

Код: Выделить всё

<a name="start_here"></a>
И перед этой строкой добавляем:

Код: Выделить всё

<br />
<div class="global-notice green">
    <strong>Внимание:</strong> это глобальное объявление о таком-то событии.
    <a class="cross" href="#">Закрыть</a>
</div>
Изображение
 
 
Шаг 2. Редактирование CSS.

Нам необходимо описать несколько цветовых схем для глобального объявления. В данном примере представлены четыре основные цветовые схемы. Обладая элементарными знаниями в CSS, вы можете добавить свои собственные цветовые схемы.

Открываем файл /styles/prosilver/theme/colours.css, находим:

Код: Выделить всё

input.disabled {
    color: #666666;
}
И ниже добавляем:

Код: Выделить всё

.global-notice {
    padding: 12px;
    font-family: Tahoma, Geneva, sans-serif;
    font-size: 12px;
    font-weight: bold;
    margin-bottom: 10px;
    border: 1px solid;
    -moz-box-shadow: inset 0 -1px #FFFFFF;
}

.global-notice strong {
    color: #000000;
}

.notice-top {
    border-top: none;
    border-left: none;
    border-right: none;
    margin-top: -12px;
}

.blue {
    background-color: #e5f4ff;
    border-color: #a7cee2;
    color: #004b90;
}

.red {
    background-color: #ffe5e5;
    border-color: #e2a8a8;
    color: #900000;
}

.green {
    background-color: #e4ffdf;
    border-color: #b8dfb8;
    color: #3a6e31;
}

.yellow {
    background-color: #fdffe5;
    border-color: #dfe2a7;
    color: #678801;
}

.cross {
    float: right;
    width: 12px;
    height: 12px;
    background: no-repeat 50% bottom;
    text-indent: -9999px;
    display: block;
    outline: none;
}

.blue .cross {
    background-image: url("{T_THEME_PATH}/images/blue-cross.gif");
}

.red .cross {
    background-image: url("{T_THEME_PATH}/images/red-cross.gif");
}

.green .cross {
    background-image: url("{T_THEME_PATH}/images/green-cross.gif");
}

.yellow .cross {
    background-image: url("{T_THEME_PATH}/images/yellow-cross.gif");
}
 
 
Шаг 3. Задействование jQuery.

Сделаем так, чтобы глобальное объявление пропадало не моментально, а с эффектом угасания, а так же убедимся в том, что объявление не появится снова после обновления страницы.

Открываем файл /styles/prosilver/template/overall_header.html, ищем:

Код: Выделить всё

<script type="text/javascript" src="{T_TEMPLATE_PATH}/jquery.cookie.js"></script>
И ниже вставляем:

Код: Выделить всё

<script type="text/javascript">
$(document).ready(function() {
    $("a.cross").click(function() {
        $(".global-notice").fadeOut();
        $.cookie('noticeState', 'hidden', { expires: 3, path: '/'});
    });
   
    var noticeState = $.cookie('noticeState');
   
    if(noticeState == 'hidden') {
        $(".global-notice").hide();
    };
});
</script>
 
 
Важная информация.

Данный скрипт достаточно прост, поэтому может быть использован только один раз. Единственный способ использовать скрипт для отображения нескольких сообщений одновременно (причем без использования эффекта угасания при нажатии крестика) — не использовать крестик для закрытия сообщений. Нужно просто убрать соответствующие строки кода, отвечающие за этот крестик. Предполагается, что глобальные объявления являются временными, поэтому по умолчанию установлена планка в 3 дня для их истечения и автоматического пропадания из поля зрения. Число дней можно увеличить или уменьшить в файле overall_header.html:

Код: Выделить всё

$.cookie('noticeState', 'hidden', { expires: 3, path: '/'});
Кроме того, используемые для глобального объявления цвета так же можно легко поменять. Строчка, ответственная за цвет, так же находится в файле overall_header.html:

Код: Выделить всё

<div class="global-notice notice-top green"></div>
И здесь вы можете прописать любой цвет, какой вам нужен.
 
 
Примечание.

Я не являюсь изначальным автором этой модификации. Я просто перевел оригинальную статью на русский язык, добавив соответствующее этому форуму оформление. Оригинал статьи находится здесь.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось МайскийЖук 24.08.2012 10:26, всего редактировалось 2 раза.
Любовь и боль, покой и бой я как любой несу с собой…
Аватара пользователя
evrus01
Former team member
Сообщения: 1274
Стаж: 15 лет 6 месяцев
Откуда: Москва
Благодарил (а): 107 раз
Поблагодарили: 234 раза

Re: [MOD] Простые глобальные объявления

Сообщение evrus01 »

В закладки...
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: [MOD] Простые глобальные объявления

Сообщение Pazh »

А работоспособность кода проверялась? При беглом взгляде на код эффект должен получиться обратный: т.е. изначально объява покажется, после нажатия на крестик создается кука со временем жизни 3 дня - итог объява не будет показываться эти самые 3 дня, а потом кука протухнет и объява должна активизироваться снова. (ИМХО, должно быть наоборот - кука должна быть создана при первом показе объявы и удаляться по нажатию на крестик или протуханию через Х дней)
Второй минус кода - невозможность менять текст объявы и время жизни объявы через админку - нужно каждый раз править шаблон.
Третий минус - скрестить jquery с motools
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
evrus01
Former team member
Сообщения: 1274
Стаж: 15 лет 6 месяцев
Откуда: Москва
Благодарил (а): 107 раз
Поблагодарили: 234 раза

Re: [MOD] Простые глобальные объявления

Сообщение evrus01 »

Pazh, вроде все норм — http://evrus.ts6.ru
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: [MOD] Простые глобальные объявления

Сообщение Pazh »

ключевое слово "вроде" - поменял у куки время протухания и объява опять появилась после безвременной кончины куки о чем я писал выше
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
evrus01
Former team member
Сообщения: 1274
Стаж: 15 лет 6 месяцев
Откуда: Москва
Благодарил (а): 107 раз
Поблагодарили: 234 раза

Re: [MOD] Простые глобальные объявления

Сообщение evrus01 »

Ну а как еще? В БД писать? А как тогда быть с гостями?

Сейчас без этого никуда:
Изображение
Sad but true...
Аватара пользователя
МайскийЖук
phpBB 3.0.7-PL1
Сообщения: 2535
Стаж: 16 лет 11 месяцев
Благодарил (а): 17 раз
Поблагодарили: 366 раз

[MOD] Простые глобальные объявления

Сообщение МайскийЖук »

Есть такая хрень. Я сам все проверил и даже хотел в первом сообщении изложить найденные недоработки, но решил подождать отзывов. Я вообще на том сайте уже несколько кодов попробовал — везде какие-то недоработки. Парень, в принципе, молодец, правильной дорогой идет, но опыта ему все же не хватает.
Любовь и боль, покой и бой я как любой несу с собой…
Аватара пользователя
Pazh
Former team member
Сообщения: 2317
Стаж: 16 лет 10 месяцев
Благодарил (а): 42 раза
Поблагодарили: 506 раз

Re: [MOD] Простые глобальные объявления

Сообщение Pazh »

Еще один минус такого кода: если Вы сделали объяву и поставили ей куку на 7 дней например, юзер ее прочитал и нажал крестик, Вы до истечение 7 дней меняете объяву - юзер ее не увидит пока не протухнет кука, т.к. она будет закрывать какждый раз блок объявы.

Если использовать механизм куки, то у каждого объявления должна быть уникальная кука, причем с проверкой не просто что она есть или нет, но с изменением (и соответственно анализом) ее значения (show, hide например) - короче тут целое поле для разработки если у кого есть время - главное продумать все возможные варианты работы скрипта.

Добавлено спустя 1 минуту 59 секунд:
МайскийЖук писал(а):Парень, в принципе, молодец, правильной дорогой идет, но опыта ему все же не хватает.
точно, идея хорошая, но не проработанная
Помощь в ЛС/email только за WM или ЮMoney
Аватара пользователя
evrus01
Former team member
Сообщения: 1274
Стаж: 15 лет 6 месяцев
Откуда: Москва
Благодарил (а): 107 раз
Поблагодарили: 234 раза

Re: [MOD] Простые глобальные объявления

Сообщение evrus01 »

Но ведь все же уже есть — ACP Announcement Centre 1.2.5
А этот вариант "на скорую руку" :)

Кстати, Кристиан вполне коммуникабельный разработчик. Я ему, помнится, писал про кнопки для Absolution (Re: Русские кнопки для стилей).
future
phpBB 1.4.4
Сообщения: 183
Стаж: 14 лет 6 месяцев
Благодарил (а): 39 раз
Поблагодарили: 1 раз

Re: [MOD] Простые глобальные объявления

Сообщение future »

А "глобальные объявления" в стиле субсильвер будут?
Вот как природа это все вот шурум-бурум устроила: Ртом торт есть можно, а тортом рот, - нельзя! Чудеса!
Аватара пользователя
Dbonz
phpBB 2.0.0
Сообщения: 231
Стаж: 14 лет 2 месяца
Благодарил (а): 25 раз
Поблагодарили: 25 раз

Re: [MOD] Простые глобальные объявления

Сообщение Dbonz »

Странная ерунда получается:
35e84444e72e.jpg
Т.е. так нагло кириллицу впихнуть не получилось.
И ещё "проблёскивает" уже закрытое объявление, когда страницы листаешь. В разные места overall_header всталял, результат тот же…
evrus01 писал(а):Но ведь все же уже есть — ACP Announcement Centre 1.2.5
А Announcement Centre разве даёт юзеру возможность закрыть объявление?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: [MOD] Простые глобальные объявления

Сообщение Пчелкин »

Dbonz писал(а):Странная ерунда получается:
Это не ерунда, а лень воспользоваться поиском на этом форуме...
Набери в поиске "вместо букв"
Удивись...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Dbonz
phpBB 2.0.0
Сообщения: 231
Стаж: 14 лет 2 месяца
Благодарил (а): 25 раз
Поблагодарили: 25 раз

Re: [MOD] Простые глобальные объявления

Сообщение Dbonz »

Пчелкин писал(а):Набери в поиске "вместо букв"
Зачем? Чтобы попасть на 7 страниц такой же рекламы поиска? И это не главная проблема. Знаю, что решаема, просто к сведенью воткнул скрин. Кренове всего, что "проблёскивает"/"мелькает" закрытое объявление, когда переходишь на страничку топика или просто листаешь. ;)
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: [MOD] Простые глобальные объявления

Сообщение Пчелкин »

Про мельки тож заметил...думаю автор отзовется...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Dbonz
phpBB 2.0.0
Сообщения: 231
Стаж: 14 лет 2 месяца
Благодарил (а): 25 раз
Поблагодарили: 25 раз

Re: [MOD] Простые глобальные объявления

Сообщение Dbonz »

Тфу ты… кодировка не та в notepadе стояла... Спасибо за подзатыльник! :D

Вернуться в «Бета-версии модов для phpBB 3.0.x»