Site/web.php v200.1.0
Параметры include: focus, stype, id и теги шаблона
Описание: публичная точка входа модуля на сайте. Подключается через DLE {include}; разметка берётся из templates/{skin}/devcraft/notifications/ (fallback — Default).
Файл: devcraft/src/modules/Notifications/Site/web.php
Было: engine/modules/devcraft/notifications_site.php (перенесено в Site/).
С версии: 200.1.0
См. также:
Синтаксис
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=…&stype=…&id=…"}Параметры передаются в query-строке include (стандартный механизм DLE: становятся локальными переменными модуля).
Используйте stype, не type. В dle_template::load_file() переменная $type уже занята расширением файла (php), а extract(..., EXTR_SKIP) отбрасывает type= из query — подписка всегда сваливалась бы в news.
Параметры
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
focus | string | subscribe | Режим вывода: что именно рендерить |
stype | string | news | Тип подписки; имеет смысл при focus=subscribe |
id | string | '' | Идентификатор объекта подписки (см. тип) |
newsid | string|int | — | Алиас id (если id не задан) |
news_id | string|int | — | Алиас id (если id и newsid не заданы) |
Неизвестный stype → трактуется как news. Значение id нормализуется по типу (SubscriptionType::normalizeId).
focus
| Значение | Гости | Авторизованные | Что выводит |
|---|---|---|---|
css | да | да | <link> на assets/notifications.css + meta dc-ajax-base, dc-notify-live-period |
js | да | да | dc_public.js, timeago, assets/notifications.js (однократно за запрос) |
badge | нет | да* | badge.tpl — колокольчик и список непрочитанных |
wall | нет | да* | wall.tpl — стена уведомлений |
subscribe | нет | да* | subscribe/{stype}.tpl — кнопка подписки / отписки |
* Плюс права группы и (для subscribe) флаг типа в настройках модуля. Без права или при выключенном типе модуль молча ничего не выводит.
Для гостей любые focus, кроме css и js, завершаются сразу (return).
stype (только focus=subscribe)
stype | Формат id | Пример |
|---|---|---|
news | ID новости (int > 0) | id={news-id} |
cat | ID категории | id={category-id} |
user | user_id автора | id={user-id} |
tag | slug/текст тега ({cloudstag} на странице тега) | id={cloudstag} |
xfield | поле/значение | id=year/2019 или без id на xfsearch |
all | не используется (пустая строка) | без id |
Для stype=news при id ≤ 0 кнопка не выводится. Для stype=xfield без id на странице do=xfsearch модуль собирает id из URL (например /xfsearch/year/2019/ → year/2019). Семантика срабатывания (add vs edit): типы подписок.
Рекомендуемая обёртка в main.tpl: [available=cat] / [available=tags] / [available=xfsearch].
Примеры
{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"}
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=wall"}
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=news&id={news-id}"}
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=cat&id={category-id}"}
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=user&id={user-id}"}
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=tag&id={cloudstag}"}
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=xfield"}
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=xfield&id=linked_data/dasdasd"}
{include file="devcraft/src/modules/Notifications/Site/web.php?focus=subscribe&stype=all"}На страницах раздела, тега и xfsearch удобнее обернуть include в [available=cat] / [available=tags] / [available=xfsearch] (см. гайд).
Теги шаблона
Модуль выставляет плейсхолдеры перед load_template / compile:
| Тег | Когда | Значение |
|---|---|---|
{news-id} | всегда | числовой id (для news) |
{subscription-id} | всегда | нормализованный id подписки |
{subscription-type} | всегда | news / cat / … |
{user-hash} | всегда | $dle_login_hash для AJAX |
{subscribe-label} | subscribe | «Подписаться» / «Отписаться» |
{subscribed} | subscribe | 1 или 0 |
{count} | subscribe | число подписчиков |
{items} | wall / badge | HTML списка записей |
{unread-count} | wall / badge | число непрочитанных |
{notifications-title} | wall / badge | заголовок |
{mark-all-label} | wall / badge | «Прочитать все» |
{empty-label} | wall / badge | «Нет уведомлений» |
{empty-hidden} | wall / badge | пусто или hidden |
{wall-limit} | всегда | лимит из настроек |
{live-refresh-period} | всегда | интервал автообновления (сек; 0 — выкл.) |
{notifications-url} | всегда | URL страницы уведомлений |
{view-all-label} | всегда | «Все уведомления» |
{theme-path} | всегда | URL каталога активной темы |
Шаблоны: subscribe/{type}.tpl, wall.tpl, badge.tpl, item.tpl и др. — см. шаблоны и теги.