Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

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

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).

Внимание! Не устанавливайте бета-версии расширений на работающие форумы!
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 11 лет 3 месяца
Благодарил (а): 42 раза
Поблагодарили: 251 раз
Контактная информация:

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

Сообщение c61 »

Развитие этого расширения: см. [BETA] extender: конструктор слушателей событий (отличия: функционал значительно шире, можно использовать любой слушатель событий шаблона и ядра, для кода PHP корректная обработка практически любых ошибок, множество дополнительных функций).

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

copyright (c) 2014 c61 c61@yandex.ru
license http://opensource.org/licenses/gpl-license.php GNU Public License
em_adm4.gif
Empennage: Добавление кода и контента в верх/низ страниц
empennage_v_0_3_2.zip
(48.26 КБ) 189 скачиваний
Расширение позволяет добавлять код и контент в верх/низ страниц (css, html, javascript) для всех стилей, что может быть использовано, например, для добавления объявлений, счетчиков, информеров, отладки собственных стилей и скриптов.

Код и контент могут быть добавлены:
  • стили и скрипты (а также метатэги) могут быть добавлены в заголовок страницы (используется Template Event overall_header_stylesheets_after);
  • код, контент и скрипты могут быть добавлены в верх страницы перед основным контентом, рекомендуется для размещения объявлений (используется Template Event overall_header_content_before);
  • код, контент и скрипты могут быть добавлены в низ страницы после copyright, рекомендуется для размещения собственного copyright и дополнительной информации (используется 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 ( [del] ) - более широкие возможности по собственным стилям и месту отображения контента.
Отличия от расширения 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 располагаются в /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'>

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

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

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

Скриншоты:
em_example.gif
em_adm1.gif
em_adm2.gif
em_adm3.gif
em_example.gif
Последний раз редактировалось c61 15.11.2015 11:19, всего редактировалось 19 раз.
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

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

Сообщение xisp »

c61 писал(а):<center>...</center>
Тег невалиден и не рекомендуется к использованию.
phpBBex
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 11 лет 3 месяца
Благодарил (а): 42 раза
Поблагодарили: 251 раз
Контактная информация:

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

Сообщение c61 »

xisp писал(а):Тег невалиден
Это мнение w3c, однако, на поддержке тэга браузерами это в ближайшем будущем не скажется ) Можно и div'ами, но это будет реверанс в сторону w3c - они теперь считают, что управление центрированием - исключительная прерогатива css. Я предпочитаю center, при это зная, что он считается устаревшим. Однако, я так привык (время валидности этого тэга в моей жизни намного больше времени его "невалидности") и меняться не собираюсь до тех пор, пока браузеры не перестанут этот тэг поддерживать.
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

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

Сообщение xisp »

Вот из- за этого и бардак в вебе, и браузерам приходится поддерживать кучу устаревших тегов, что явно не ускоряет их работу.
phpBBex
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 11 лет 3 месяца
Благодарил (а): 42 раза
Поблагодарили: 251 раз
Контактная информация:

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

Сообщение c61 »

Да разве ? Бардак это когда одинаковые инструкции интерпретируются браузерами по разному. Бардак в web'е в том числе из-за стратегии действий w3c. На скорость работы браузера лишний тэг не влияет, это тысячные доли процента, не надо говорить об этом... Вы ещё скажите что поддержка незамутненного плюсами-крестами C по Кернигану и Ричи замедляет компиляторы и разводит бардак и такой код уже невалиден )

Прошу модераторов замочить посты с оффтопом в теме. Про валидность - это в другом месте.
Аватара пользователя
SAMPAWNO
phpBB 1.0.0
Сообщения: 1
Стаж: 9 лет 9 месяцев
Благодарил (а): 1 раз
Контактная информация:

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

Сообщение SAMPAWNO »

Z
c61 писал(а):для добавления счетчиков и информеров
Яндекс метрику не грузит :(
stamper
phpBB 1.2.0
Сообщения: 10
Стаж: 9 лет 4 месяца

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

Сообщение stamper »

А в чем сокровенный смысл так делать? Ничего добавить не возможно в принципе при таких ограничениях....
Введённое значение параметра «Контент, добавляемый после copyright» слишком длинное. Максимальная допустимая длина — 255.
KOT-Pskov
phpBB 1.4.2
Сообщения: 50
Стаж: 9 лет 5 месяцев
Благодарил (а): 23 раза
Поблагодарили: 2 раза
Контактная информация:

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

Сообщение KOT-Pskov »

Та же проблема... :(
Аватара пользователя
romaamor
phpBB 3.0.2
Сообщения: 2081
Стаж: 11 лет 11 месяцев
Откуда: Одесса
Благодарил (а): 707 раз
Поблагодарили: 161 раз
Контактная информация:

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

Сообщение romaamor »

c61 писал(а):может быть использовано, например, для добавления счетчиков и информеров.
Так уже есть -
Изображение
Есть 2 места на выбор - слева или справа, а так же можно отображать с обоих сторон 2 разных счетчика, отображение которых динамично, не зависит от разрешения монитора
Изображение
Изображение
В корневой папке форума ext создаем папку phpbbworld и в нее копируем папку counters из скачанного архива. После идем в админку (Администраторский раздел - Персонализация - Управление расширениями)
Автор -DeaDRoMeO
counters.rar
(7.7 КБ) 292 скачивания
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

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

Сообщение xisp »

stamper писал(а):Максимальная допустимая длина — 255.
Это ограничение таблицы конфига движка. Чтобы его обойти, расширению нужно создавать свою таблицу, и делать дополнительный запрос на каждую страницу форума.
phpBBex
Аватара пользователя
rxu
phpBB Guru
phpBB Guru
Сообщения: 16313
Стаж: 17 лет 10 месяцев
Откуда: Красноярск
Благодарил (а): 533 раза
Поблагодарили: 2119 раз
Контактная информация:

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

Сообщение rxu »

xisp писал(а):Это ограничение таблицы конфига движка. Чтобы его обойти, расширению нужно создавать свою таблицу
Так бы оно и было, если бы не "phpbb_config_text" с "config_value" типа "MTEXT".
Изображение
Аватара пользователя
xisp
phpBB 3.0.0 RC7
Сообщения: 1798
Стаж: 11 лет 10 месяцев
Благодарил (а): 152 раза
Поблагодарили: 215 раз
Забанен: Бессрочно

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

Сообщение xisp »

А, точно. Но данное расширение сохраняет конфиги в phpbb_config.
Методом тыка- нужно в migrations использовать вместо

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

			array('config.add', array('empennage_content_copyright_append', '')),
			array('config.add', array('empennage_content_footer_after', '')),
Вот это

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

			array('config_text.add', array('empennage_content_copyright_append', '')),
			array('config_text.add', array('empennage_content_footer_after', '')),
И ведь никакой ссылки в ихней вики со страницы про добавление конфигов на добавление текстовых конфигов нет. Нашёл постфактум.
phpBBex
stamper
phpBB 1.2.0
Сообщения: 10
Стаж: 9 лет 4 месяца

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

Сообщение stamper »

romaamor писал(а):
c61 писал(а):может быть использовано, например, для добавления счетчиков и информеров.
Так уже есть
Роман, респект и уважуха! То, что надо.
Аватара пользователя
c61
phpBB 2.0.6
Сообщения: 506
Стаж: 11 лет 3 месяца
Благодарил (а): 42 раза
Поблагодарили: 251 раз
Контактная информация:

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

Сообщение c61 »

Выпущена версия 0.0.3 с исправлением ошибок и добавлением примеров. Отмечу, что данное расширение позволяет более гибко управлять стилями и местоположением контента, чем вариант от DeaDRoMeO.
KOT-Pskov
phpBB 1.4.2
Сообщения: 50
Стаж: 9 лет 5 месяцев
Благодарил (а): 23 раза
Поблагодарили: 2 раза
Контактная информация:

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

Сообщение KOT-Pskov »

c61, а можно использовать Ваше расширение совместно с Counters от DeaDRoMeO (например Counters для установки счётчиков, а Ваше для размещения copyright сайта) или это всё-таки нежелательно?
Кстати, в Counters заметил небольшую ошибку: если установить счётчик только с одной стороны идёт смещение надписи Администраторский раздел.
smesch.png
Ответить

Вернуться в «Бета-версии расширений для phpBB»