DevCraft Документации
Справочник

show_notifications.php v200.1.0

Параметры include: focus, stype, id и теги шаблона

Описание: публичная точка входа модуля на сайте. Подключается через DLE {include}; разметка берётся из templates/{skin}/devcraft/notifications/ (нет файла — Default). Стили и скрипты сайта — из Public/ через siteAssets (тег {devcraft} в main.tpl).

Файл: devcraft/src/modules/Notifications/Controller/show_notifications.php

Было: Site/web.php (оставлен как тонкая совместимость). Логика — класс ShowController.

С версии: 200.1.0

См. также:

Синтаксис

{include file="devcraft/src/modules/Notifications/Controller/show_notifications.php?focus=…&stype=…&id=…"}

Параметры передаются в query-строке include (стандартный механизм DLE: становятся локальными переменными модуля).

Используйте stype, не type. В dle_template::load_file() переменная $type уже занята расширением файла (php), а extract(..., EXTR_SKIP) отбрасывает type= из query — подписка всегда сваливалась бы в news.

Параметры

ПараметрТипПо умолчаниюОписание
focusstringsubscribeРежим вывода: что именно рендерить
stypestringnewsТип подписки; имеет смысл при focus=subscribe
idstring''Идентификатор объекта подписки (см. тип)
newsidstring|int—Алиас id (если id не задан)
news_idstring|int—Алиас id (если id и newsid не заданы)

Неизвестный stype → трактуется как news. Значение id нормализуется по типу (SubscriptionType::normalizeId).

focus

ЗначениеГостиАвторизованныеЧто выводит
cssдаданичего (стили идут из siteAssets; старый include оставлен пустым)
jsдаданичего (скрипты идут из siteAssets; старый include оставлен пустым)
badgeнетда*badge.tpl — колокольчик и список непрочитанных
wallнетда*wall.tpl — стена уведомлений
subscribeнетда*subscribe/{stype}.tpl — кнопка подписки / отписки

* Плюс права группы и (для subscribe) флаг типа в настройках модуля. Без права или при выключенном типе модуль молча ничего не выводит.

Для гостей любые focus, кроме пустых css и js, завершаются сразу (пустая строка).

В main.tpl нужен тег {devcraft} (или пара {devcraft-header} / {devcraft-scripts}). Стили notifications.css, скрипты timeago и notifications.js подставляет Admin из списков публичных ресурсов.

stype (только focus=subscribe)

stypeФормат idПример
newsID новости (int > 0)id={news-id}
catID категорииid={category-id}
useruser_id автораid={user-id}
tagslug/текст тега ({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/Controller/show_notifications.php?focus=badge"}

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

{include file="devcraft/src/modules/Notifications/Controller/show_notifications.php?focus=subscribe&stype=news&id={news-id}"}
{include file="devcraft/src/modules/Notifications/Controller/show_notifications.php?focus=subscribe&stype=cat&id={category-id}"}
{include file="devcraft/src/modules/Notifications/Controller/show_notifications.php?focus=subscribe&stype=user&id={user-id}"}
{include file="devcraft/src/modules/Notifications/Controller/show_notifications.php?focus=subscribe&stype=tag&id={cloudstag}"}
{include file="devcraft/src/modules/Notifications/Controller/show_notifications.php?focus=subscribe&stype=xfield"}
{include file="devcraft/src/modules/Notifications/Controller/show_notifications.php?focus=subscribe&stype=xfield&id=linked_data/dasdasd"}
{include file="devcraft/src/modules/Notifications/Controller/show_notifications.php?focus=subscribe&stype=all"}

На страницах раздела, тега и поиска по полю удобнее обернуть вставку в [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 для запросов без обновления страницы
{subscribe-label}subscribe«Подписаться» / «Отписаться»
{subscribed}subscribe1 или 0
{count}subscribeчисло подписчиков
{items}wall / badgeHTML списка записей
{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 и др. — см. шаблоны и теги.

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