Include в шаблонах темы v200.1.0
Где вставить css/js/badge/wall и кнопки подписки на news/cat/tag/xfield/user/all
Точка входа: devcraft/src/modules/Notifications/Site/web.php через обычный DLE {include}. Разметка — из templates/ВАША_ТЕМА/devcraft/notifications/ (нет файла — берётся Default).
Краткий обзор виджетов: Вставка в шаблоны. Семантика типов: типы подписок.
Базовые focus
| focus | Куда в теме | Что |
|---|---|---|
css | шапка (<head>) | стили + meta для AJAX и автообновления |
js | низ страницы (перед </body>) | скрипты |
badge | меню / шапка | колокольчик |
wall | профиль / контент | стена списка |
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=css"}
…
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=badge"}
…
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=js"}focus=css доступен гостям. badge / wall / subscribe — только авторизованным (и при соответствующих правах группы).
Файл темы → include
| Файл темы | Типичный include |
|---|---|
main.tpl (шапка) | focus=css, focus=badge |
main.tpl (подвал) | focus=js |
main.tpl ([available=cat]) | type=cat&id={category-id} |
main.tpl ([available=tags]) | type=tag&id={cloudstag} |
main.tpl ([available=xfsearch]) | type=xfield (id из URL автоматически) |
fullstory.tpl | focus=subscribe&stype=news&id={news-id} |
userinfo.tpl | type=user + при желании focus=wall |
| отдельная страница «все новости» | type=all |
В теме Default нет отдельного category.tpl — кнопки категории, тега и xfsearch удобнее ставить в main.tpl внутри [available=…].
Сниппеты подписки
Параметр типа — stype, не type. В ядре DLE load_file() уже занимает $type расширением .php, поэтому type=xfield из include не
доходит до модуля.
Новость
В fullstory.tpl:
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=news&id={news-id}"}Категория
В main.tpl (или шаблоне раздела). Id — тег DLE {category-id}:
[available=cat]
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=cat&id={category-id}"}
[/available]Пример: на https://сайт/news/ подписчик получит уведомления о новых материалах в категории news.
Тег
На странице тега DLE выставляет {cloudstag} (текущий тег из URL). В main.tpl:
[available=tags]
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=tag&id={cloudstag}"}
[/available]Пример: https://сайт/tags/информация/ → подписка на тег информация. В matcher id приводится к нижнему регистру.
Можно и литерал: type=tag&id=информация — тогда кнопка не зависит от {cloudstag}, но подходит только для одной фиксированной страницы.
Доп. поле (xfield / xfsearch)
Формат id: имя_поля/значение, например year/2019.
На странице поиска по доп. полю (/xfsearch/{поле}/{значение}/) у DLE нет готового тега вроде {cloudstag}. Модуль сам собирает id из URL ($_GET['xf']), если в include не передан id:
[available=xfsearch]
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=xfield"}
[/available]Пример: https://сайт/xfsearch/year/2019/ → подписка на year/2019.
Явный литерал (любая страница):
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=xfield&id=year/2019"}Срабатывает при новой публикации с таким значением поля. Нужны флаг subscriptions_xfield и право notifications_allow_subscribe_xfield. Подробнее: типы подписок.
Автор (профиль пользователя)
В userinfo.tpl — id это user_id автора профиля (не логин):
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=user&id={user-id}"}Подписчик получает уведомления о новых публикациях этого автора. Сам автор профиля при новой подписке на него получает сценарий user_subscribed (если включено в настройках модуля), со ссылкой на профиль подписчика. Повторная подписка / отписка / подписка на себя — без лишнего уведомления.
Все новые материалы
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=all"}Права и флаги
Чтобы кнопка реально работала:
- В настройках модуля включён флаг типа:
subscriptions_news,subscriptions_cat,subscriptions_user,subscriptions_tag,subscriptions_xfield,subscriptions_all. - В Правах групп разрешена подписка на этот тип.
- Для событий публикации / правки — глобальные «Уведомлять при публикации» / «Уведомлять об обновлении новости».
Без права или при выключенном типе AJAX вернёт ошибку, а на странице кнопка может не отображаться.
Стена в профиле
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=wall"}Отдельный URL: Страница уведомлений (do=notifications).