|
Поделиться

[BETA] empennage: добавление контента в низ/верх страниц

Начиная с версии 3.1.x, моды были заменены "расширениями", которые выполняют ту же самую функцию, но без изменений в исходном коде движка.

Сообщение c61 » 16.02.15 08:39

Empennage: add code and content to page top/bottom
---------
phpBB 3.1, 3.2 extension

copyright (c) 2014 c61 c61@yandex.ru http://c61.no-ip.org
license http://opensource.org/licenses/gpl-license.php GNU Public License


Empennage: Добавление кода и контента в верх/низ страниц


Расширение позволяет добавлять код и контент в верх/низ страниц (css, html, javascript) для всех стилей, что может быть использовано, например, для добавления объявлений, счетчиков, информеров, отладки собственных стилей и скриптов.

Код и контент могут быть добавлены:
- стили и скрипты (а также метатэги) могут быть добавлены в заголовок страницы (используется Template Event overall_header_stylesheets_after);
- код, контент и скрипты могут быть добавлены в верх страницы перед основным контентом, рекомендуется для размещения объявлений (используется Template Event overall_header_content_before);
- код, контент и скрипты могут быть добавлены в низ страницы после copyright, рекомендуется для размещения собственного cjpyright и дополнительной информации (используется Template Event overall_footer_copyright_append);
- код, контент и скрипты могут быть добавлены в низ страницы после футера, рекомендуется для размещения счётчиков и информеров (используется Template Event overall_footer_after);
- скрипты могут быть добавлены в низ страницы перед закрывающем тэгом body (используется Template Event overall_footer_body_after).

Используйте <style type="text/css">...</style> для стилей и <script type="text/javascript">...</script> для javascript.

Любая выдача может быть отключена. Для выдачи объявлений можно использовать дополнительные условия.

Можно использовать любые языковые переменные из языковых файлов. Например, {L_<STRINGNAME>}, где <STRINGNAME> — это имя переведённой строки, которую вы хотите добавить. Например, {L_WROTE} будет отображено как «wrote» или переведено в зависимости от выбранного пользователем языка. Можно использовать любые переменные, определённые для основного шаблона, например, {SCRIPT_NAME}. Для локальных переменных, определённых посредством DEFINE, используйте {$VARNAME}.

Допустимы все конструкции для шаблонов phpBB 3.0.13 (не 3.1.x), кроме включений файлов (INCLUDE и т.п.). Программы для разных вставок кода выполняются последовательно сверху вних в общем пространстве имён, то есть локальные переменные, определённые DEFINE при вставке в верхней части страницы, доступны для вставок в нижней части страницы. Для отладки можно включить выдачу отладочной информации при обнаружении ошибок.

Можно разрешить PHP в шаблонах расширения. При этом можно доступится к переменным основного шаблона через $this->rootref[]. Дополнительную информацию можно получить анализируя файлы расширения. Будьте осторожны, исполнение некорректного кода может привести к неработоспособности конференции.

Отличия от расширения автора DeaDRoMeO ( http://phpbbworld.ru/viewtopic.php?f=6& ... unters#p66 ) - более широкие возможности по собственным стилям и месту отображения контента.
Отличия от расширения BoardAnnouncements ( https://www.phpbb.com ) - можно задать более гибкие условия выдачи объявлений, однако, их стиль придётся задавать вручную.

Основное отличие - возможность использования переменных и написания программы для своих шаблонов. Это может широко использоваться при разработке и отладке собственных стилей и скриптов, поскольку нет необходимости заменять файлы на сервере, что значительно экономит время.


Примечание о проблемах безопасности
-----------------------------------
Если разрешен PHP в шаблонах Empennage, можно использовать '<!-- PHP --> ... <!-- ENDPHP -->'. Однако, разрешать PHP в шаблонах не рекомендуется из соображений безопасности. Учтите, в этом случае возможно использование eval() и прочих "вредных" функций.

Потенциальная опасность разрешения PHP в шаблонах Empennage значительно ниже, чем разрешение PHP в шаблонах стилей, поскольку:
- шаблоны Empennage хранятся в базе данных, а не в файлах;
- компиляция выполняется до того, как доходит дело до компиляции общего шаблона.
Однако, если Вы допустили ошибку, последствия могут быть даже более печальны, чем при некорректном использовании PHP в шаблонах стилей, вплоть до полной неработоспособности конференции и потери данных. Поэтому рекомендуется проявлять осторожность.


Дополнительные переменные основного шаблона
-------------------------------------------
Empennage создаёт переменные с компилированным содержимым (имя в соответствии с местом вставки), если вставка будет выдана:
S_EMPENNAGE_CONTENT_HEADER_STYLESHEETS_AFTER
S_EMPENNAGE_CONTENT_HEADER_CONTENT_BEFORE
S_EMPENNAGE_CONTENT_COPYRIGHT_APPEND
S_EMPENNAGE_CONTENT_FOOTER_AFTER
S_EMPENNAGE_CONTENT_FOOTER_BODY_AFTER
и вышепеременные с суффиксами '_HASH', в которых содержится crc32 (беззнаковый десятичный) соответствующего исходного кода.

S_EMPENNAGE_CONTENT_HEADER_CONTENT_BEFORE можно использовать в своём алгоритме скрытия объявления (javascript) для проверки на изменение текста объявения.

Создаётся также S_EMPENNAGE_COOKIENAME - имя cookie для использования в javascript.

Установка
---------

Копировать содержимое каталога root в корневую папку конференции с сохранением структуры каталогов (расширения phpBB 3.1 и 3.2 располагаются в /ext).


Примеры:
-------

Выравнивание добавляемого контента
----------------------------------
По центру

<div width="100%" align="center">
...контент...
</div>

Слева и справа

<div width="100%">
<div style="float:left; padding:8px;">
...контент слева...
</div>
<div style="float:right; padding:8px;">
...контент справа...
</div>
</div>

Объявление только для страницы входа
------------------------------------
Включить выдачу объявления:
Да
Включить для ботов:
Нет
Включить для гостей:
Да
Включить для зарегистрированных пользователей:
Нет
Включить для имени страницы и запроса, удовлетворяющих регулярному выражению:
/ucp.php\?mode=login/isu
Контент объявления, добавляемый в верх страниц:
<br />
<font color="red" size="+0.5em">
Текст объявления
</font>
<br /><br />

Объявление с возможностью скрытия
---------------------------------
<div id="announcement" style="display:none;"></div>
<script type="text/javascript">
// <![CDATA[
function EAsetCookie(hide) {
var date = new Date;
date.setDate(date.getDate() + 1000);
document.cookie = "{S_EMPENNAGE_COOKIENAME}=" + hide + "; path=/; expires=" + date.toUTCString();
}
function EAgetCookie()
{
var eqname = "{S_EMPENNAGE_COOKIENAME}=";
var cookies = document.cookie.split(";");
for ( var i = 0; i < cookies.length; i++ ) {
var cookie = cookies[i];
while ( cookie.charAt(0) == " " ) cookie = cookie.substring(1, cookie.length);
if ( !cookie.indexOf(eqname) ) {
var d = parseInt(cookie.substring(eqname.length, cookie.length));
return d;
}
}
return 0;
}
var announcement = document.getElementById("announcement");
if ( announcement ) {
var announcement_title="{L_VIEW_TOPIC_ANNOUNCEMENT}";
var announcement_text="Текст объявления";
if ( EAgetCookie() != {S_EMPENNAGE_CONTENT_HEADER_CONTENT_BEFORE_HASH} ) {
announcement.style.display="block";
}
announcement.innerHTML='<font color="darkred" size="+0.5em"><div><input type="button" value="&nbsp;&times;&nbsp;" style="background: transparent; border: 1px solid lightgray; margin: 0; padding: 0; font-weight: bolder; vertical-align: top;" onclick="announcement.style.display='+"'"+'none'+"'"+'; EAsetCookie({S_EMPENNAGE_CONTENT_HEADER_CONTENT_BEFORE_HASH});" />&nbsp;<b style="vertical-align: bottom;">'+announcement_title+'</b> </div> <div> <div style="display: block;">'+announcement_text+'<hr></hr></div></div></font><br />';
}
// ]]>
</script>

Выдача информеров только для пользователей с правами администратора
-------------------------------------------------------------------
<!-- IF U_ACP -->
<div>...Здесь код информеров...</div>
<!-- ENDIF -->

Разрешить PHP и отключить <link rel="canonical" ...> в шаблонах
---------------------------------------------------------------
<!-- PHP -->
$this->rootref['U_CANONICAL'] = 0;
<!-- ENDPHP -->

Разрешить PHP и заменить логотип сайта
--------------------------------------
<!-- PHP -->
$this->rootref['SITE_LOGO_IMG'] = '<img src="http://mysite.ru/forum/styles/prosilver/site-logo.gif" style="max-width: 100%; height:auto; width:auto;">';
<!-- ENDPHP -->

Разрешить PHP и дополнить расширение External Links
---------------------------------------------------
<!-- PHP -->
$this->rootref['CREDIT_LINE'] = str_replace('https://www.phpbb.com/',$this->rootref['BOARD_URL'].'go.php?http%3A%2F%2Fwww.phpbb.com%2F',$this->rootref['CREDIT_LINE']);
$this->rootref['TRANSLATION_INFO'] = str_replace('http://www.phpbbguru.net/',$this->rootref['BOARD_URL'].'go.php?http%3A%2F%2Fwww.phpbbguru.net%2F',$this->rootref['TRANSLATION_INFO']);
<!-- ENDPHP -->

Установить иконку сайта (не favicon.ico в корне), добавив в заголовок страницы
------------------------------------------------------------------------------
<link rel='icon' href='/myfavicon.png' type='image/x-icon'>
<link rel='shortcut icon' href='/myfavicon.png' type='image/x-icon'>


История версий
--------------

0.3.2 - 20160201:
- по просьбам трудящихся: корректная миграция с любой версии, в предыдущей была только с 0.3.0
Скачать:
empennage_v_0_3_2.zip
(48.26 КБ) Скачиваний: 206

0.3.1 - 20160201:
- найдена и устранена ещё одна ошибка, приводящая к конфликту с расширением "Быстрый ответ" и др., использующими AJAX
- победив лень, внял замечаниям Sumanai и сделал-таки нормальную миграцию ))

0.3.0 - 20160127:
- реализована совместимость расширения с PHP 7 и phpBB 3.2

0.2.0 - 20160126:
- устранены конфликты с обновленным twig в phpBB 3.1.6, приводящие к конфликтам с расширением "Быстрый ответ" и др., использующими AJAX

0.1.4 - 20150905:
- для редактирования кода приделан CodeMirror (только в полноэкранном режиме из-за проблем совместимости со стилями phpbb), для чего добавляется кнопка над окном редактирования кода
- в полноэкранном режиме CodeMirror слева вверху добавлена кнопка выхода (x), дублирующая F11 и Esc
- добавлено задание пути к CodeMirror
Скачать:
empennage_v_0_1_4.zip
(37.65 КБ) Скачиваний: 335

0.1.3 - 20150304:
- исправлена ошибка с логикой выдачи объявления
- изменена обработка eval() и выдача листинга при наличи ошибок
- добавлена возможность доступа к переменных и данным шаблона
- дополнены примеры

0.1.2 - 20150221:
- исправлена ошибка с short_open_tag = off
- дбавлено отдельное разрешение на использование PHP в шаблонах расширения
- дополнены примеры
Скачать:
empennage_v_0_1_2.zip
(34.76 КБ) Скачиваний: 284

0.1.1 - 20150213:
- использован компилятор шаблонов от phpBB 3.0.13
Скачать:
empennage_v_0_1_1.zip
(33.93 КБ) Скачиваний: 266

0.1.0 - 20150212:
- экспериментальная версия: программирование шаблонов и многое другое...

0.0.7 - 20150210:
- расширение возможностей: дополнительные места выдачи кода и контента
- добавлена возможность использования лексем

0.0.6 - 20150209:
- перед записью в базу данных проводится сравнение старой и новой строк конфигурации, и если изменений не обнаружено, запись не выполняется (иначе может возникать ошибка SQL 1062 в функции set_array из-за возврата функцией mysql_affected_rows() нулевого значения и выполнения запроса INSERT INTO)
- добавлена выдача объявлений перед началом контента страниц с задаваемыми условиями (для ботов, гостей, зарегистрированных пользователей и по регулярному выражению)
- добавлен контроль последней версии расширения через сайт http://c61.no-ip.org (см. в админке Персонализация->Управление расширениями->Empennage->Информация)

0.0.5 - 20141228:
- удалены лишние файлы из migrations и выкину мусор, влиявшие на установку и работу расширения

0.0.4 - 20141114:
- снято ограничение на размер добавляемого контента

0.0.3 - 20141114:
- исправления ошибок
- добавлены примеры

0.0.2 - 20141102:
- косметические исправления

0.0.1 - 20141101:
- навеяно модом hook_counters_and_informers phpBB 3.0.x...


P.S. При добавлении счетчиков и информеров просто выполняем copy-paste их кода, для информеров может понадобиться <br /> и <div width="100%" align="center">...</div> (или "устаревший" и "невалидный", хотя и воспринимаемый браузерами правильно, <center>...</center>) в нужном месте, и не надо ковырять overall_footer.html, и более никаких забот ! ))

P.P.S. Empennage - хвостовое оперение, по сути так оно и есть... Не называть же tail......


Устаревшие версии безжалостно удаляю )

Тема на моей тествой площадке тынц

Скриншоты:
em_adm1.gif

em_adm2.gif

em_adm3.gif

em_adm4.gif

em_example.gif


Добавлено спустя 7 минут 22 секунды:
Обращаю внимание на то, что данное расширение может быть использовано как инструмент разработчика. Маленько ускоряется отладка своих дополнительных стилей и скриптов со вставками переменных шаблонов, поскольку не надо копировать файлы на сервер и чистить кэш. Используем несколько вкладок браузера: в одной правим содержимое вставок страниц (через админку), в других смотрим сами страницы. Наличие возможности получения листинга компиляции вставок шаблонов помогает в отладке. После того, как сочтём результат удовлетворительным, втыкаем отлаженные вставки в свой код.
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение c61 » 05.09.15 23:17

Выпущена версия 0.1.4, в которой приделан CodeMirror по аналогии с extender'ом.
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение c61 » 26.01.16 14:24

Выпустил 0.2.0: устранены конфликты с обновленным twig в phpBB 3.1.6, приводящие к конфликтам с расширением "Быстрый ответ" и др., использующими AJAX.

Добавлено спустя 20 часов 47 минут 46 секунд:
Выпустил версию 0.3.0: реализована совместимость расширения с PHP 7 и phpBB 3.2.
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение Sumanai » 30.01.16 20:44

Можете мне пояснить тайный смысл удаления старых файлов миграции и замены их новыми?
Sumanai
 
Сообщения: 28
Зарегистрирован: 05.12.15 20:47

Сообщение c61 » 30.01.16 22:29

Не люблю накапливать мусор. Так будет до появления более-менее совместимой с другими расширениями и вечно глючной phpbb версии. То есть вероятно, что так будет всегда ))
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение Sumanai » 30.01.16 23:19

c61 писал(а):Не люблю накапливать мусор.

Но до этого накапливали. Вы неправильно используете систему миграций, оттуда у вас и были проблемы.
Sumanai
 
Сообщения: 28
Зарегистрирован: 05.12.15 20:47

Сообщение c61 » 31.01.16 01:30

Sumanai писал(а):Но до этого накапливали
До древней версии 0.0.5. Затем мне это надоело. Ныне никаких проблем с миграцией не наблюдаю. Как уже говорил, нынешний phpbb - файлопомойка. "Правильно" или "неправильно" с Вашей точки зрения - мне на это плевать. Мне так нравится. Если Вам не нравится - лицензия расширения GPL, можете взять и сделать что хотите. Если не хотите сами - укажите конкретно, что по Вашему мнению надо добавить или изменить, если меня это устроит - возможно, когда-то учту пожелания или пошлю Вас лесом :lol:

Многократно говорил и ещё раз повторю. С моей точки зрения phpbb 3.1 (и система миграций в частности) не более чем переходные версии неизвестно к чему. Напрягаться, подстраиваться под выверты разработчиков (тем более, что завтра всё может оказаться по-иному), и уж тем более ставить и использовать phpbb 3.1 не имеет никакого смысла. Обкакались разработчики с этой phpBB 3.1. Как младенцы обосрались. И вместе с ними теперь ещё куча народу, которых они активно затаскивали в это дерьмо.
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение Shredder » 31.01.16 02:16

c61 писал(а):Многократно говорил и ещё раз повторю. С моей точки зрения phpbb 3.1 (и система миграций в частности) не более чем переходные версии неизвестно к чему. Напрягаться, подстраиваться под выверты разработчиков (тем более, что завтра всё может оказаться по-иному), и уж тем более ставить и использовать phpbb 3.1 не имеет никакого смысла. Обкакались разработчики с этой phpBB 3.1. Как младенцы обосрались. И вместе с ними теперь ещё куча народу, которых они активно затаскивали в это дерьмо.

Во-во... Для меня умер phpBB после этой версии)) Раньше хотелось что-то делать, потому что был простор для творчества - делай, что хочешь, хоть чёрта лысого. Но с выходом 3.1 модописателей загнали в искусственные рамки расширений, сильно возросла сложность их создания, пропала стабильность, моды стали никому не нужны. Из-за этого интерес к phpBB постепенно исчезает)) Старое развивать нет смысла, т.к. без официальной поддержки его востребованность будет стремиться к нулю, а новое - тупиковая ветвь.
Выполняю работы по phpBB3 на заказ. Пишите в личку или на почту.
Бесплатная поддержка - только в темах.
Shredder
Администратор
 
Сообщения: 849
Зарегистрирован: 22.08.13 09:05

Сообщение c61 » 31.01.16 11:43

Shredder, эт'я ещё достаточно мягко сказал и сдержался, чтобы сразу не послать на три буквы, а ооочень хотелось :lol: Некоторые присутствующие тута подлизались к больному админу с гуру в момент его очередного обострения, когда он решил мне наговорить гадостей, а теперь пытаются со мной тут разговаривать. Я не злой, просто у меня память ооочень хорошая :lol:
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение Sumanai » 31.01.16 13:39

c61 писал(а):До древней версии 0.0.5. Затем мне это надоело.

Именно тогда вы делали неправильно. Вы зачем- то дублировали все параметры, хотя надо было только новые. Оттуда и проблемы.
Shredder писал(а):Но с выходом 3.1 модописателей загнали в искусственные рамки расширений, сильно возросла сложность их создания, пропала стабильность, моды стали никому не нужны.

Поэтому я и пилю форк. По количеству изменений я думаю там десятки модов.
c61 писал(а):когда он решил мне наговорить гадостей

Как будто мне он не говорил ;) На вполне адекватные просьбы пошли оскорбления типа "школьник". Последствия болезни?
Sumanai
 
Сообщения: 28
Зарегистрирован: 05.12.15 20:47

Сообщение c61 » 31.01.16 14:01

Sumanai писал(а):Именно тогда вы делали неправильно
Мне это прекрасно известно. Если честно, то старые миграции попадали в архивы случайно - по моему недосмотру :lol: поэтому я их потом все выпилил, а сделать "правильно" мне лень :lol: и также я руководствуюсь соображениями, приведенными выше.
Sumanai писал(а):Последствия болезни?
Да, причём прогрессирующей. А на Вас у меня зуб, нечего было влезать :lol:
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение c61 » 01.02.16 16:28

Выпустил 0.3.1:
  • найдена и устранена ещё одна ошибка, приводящая к конфликту с расширением "Быстрый ответ" и др., использующими AJAX;
  • победив лень, внял замечаниям Sumanai и сделал-таки нормальную миграцию :lol:

Добавлено спустя 2 часа 32 минуты 24 секунды:
Вдогонку выпустил версию 0.3.2:
  • по просьбам трудящихся: корректная миграция с любой версии, в предыдущей была только с 0.3.0
Аватара пользователя
c61
Разработчик модов
 
Сообщения: 249
Зарегистрирован: 24.08.13 16:46

Сообщение saturn-z » 12.03.17 21:58

При попытке войти в stk на 3.2 :
Код: Выделить всё
[phpBB Debug] PHP Notice: in file /home/community/ext/c61/empennage/event/listener.php on line 794:
[
phpBB Debug] PHP Notice: in file [ROOT]/ext/c61/empennage/event/listener.php on line 794: Indirect modification of overloaded property phpbb/user::$lang has no effect

FILE
: [ROOT]/ext/c61/empennage/event/listener.php
LINE
: 794
CALL
: stk_msg_handler()

FILE: (not given by php)
LINE: (not given by php)
CALL: c61/empennage/event/listener->event_empennage()

FILE: [ROOT]/vendor/symfony/event-dispatcher/EventDispatcher.php
LINE
: 184
CALL
: call_user_func()

FILE: [ROOT]/vendor/symfony/event-dispatcher/EventDispatcher.php
LINE
: 46
CALL
: Symfony/Component/EventDispatcher/EventDispatcher->doDispatch()

FILE: [ROOT]/phpbb/event/dispatcher.php
LINE
: 60
CALL
: Symfony/Component/EventDispatcher/EventDispatcher->dispatch()

FILE: [ROOT]/phpbb/event/dispatcher.php
LINE
: 46
CALL
: phpbb/event/dispatcher->dispatch()

FILE: [ROOT]/includes/functions.php
LINE
: 4687
CALL
: phpbb/event/dispatcher->trigger_event()

FILE: [ROOT]/stk/index.php
LINE
: 424
CALL
: page_footer()



BACKTRACE

FILE
: [ROOT]/ext/c61/empennage/event/listener.php
LINE
: 794
CALL
: stk_msg_handler()

FILE: (not given by php)
LINE: (not given by php)
CALL: c61\empennage\event\listener->event_empennage()

FILE: [ROOT]/vendor/symfony/event-dispatcher/EventDispatcher.php
LINE
: 184
CALL
: call_user_func()

FILE: [ROOT]/vendor/symfony/event-dispatcher/EventDispatcher.php
LINE
: 46
CALL
: Symfony\Component\EventDispatcher\EventDispatcher->doDispatch()

FILE: [ROOT]/phpbb/event/dispatcher.php
LINE
: 60
CALL
: Symfony\Component\EventDispatcher\EventDispatcher->dispatch()

FILE: [ROOT]/phpbb/event/dispatcher.php
LINE
: 46
CALL
: phpbb\event\dispatcher->dispatch()

FILE: [ROOT]/includes/functions.php
LINE
: 4687
CALL
: phpbb\event\dispatcher->trigger_event()

FILE: [ROOT]/stk/index.php
LINE
: 424
CALL
: page_footer() 
Аватара пользователя
saturn-z
 
Сообщения: 3
Зарегистрирован: 16.02.15 23:11

Сообщение saturn-z » 02.04.17 13:02

Ошибку устранил...
в вышеуказанной 794 строке лишний символ &
Код: Выделить всё
		$this->userlang = &$this->user->lang;

заменить на:
Код: Выделить всё
		$this->userlang = $this->user->lang;
Аватара пользователя
saturn-z
 
Сообщения: 3
Зарегистрирован: 16.02.15 23:11


Вернуться в Скрипты и расширения для phpBB 3.1.x

Кто сейчас на конференции

Сейчас этот форум просматривают: Yahoo [Bot] и гости: 2