DevCraft Документации
Руководства

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.tplfocus=subscribe&stype=news&id={news-id}
userinfo.tpltype=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.tplid это 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"}

Права и флаги

Чтобы кнопка реально работала:

  1. В настройках модуля включён флаг типа: subscriptions_news, subscriptions_cat, subscriptions_user, subscriptions_tag, subscriptions_xfield, subscriptions_all.
  2. В Правах групп разрешена подписка на этот тип.
  3. Для событий публикации / правки — глобальные «Уведомлять при публикации» / «Уведомлять об обновлении новости».

Без права или при выключенном типе AJAX вернёт ошибку, а на странице кнопка может не отображаться.

Стена в профиле

{include file="devcraft/src/modules/Notifications/Site/web.php?focus=wall"}

Отдельный URL: Страница уведомлений (do=notifications).

См. также

На этой странице