Шаблоны и теги v200.1.0
Файлы .tpl темы, сценарии, обёртки, кнопка подписки и лента
Тексты не редактируются в формах админки. Источник — файлы скина:
templates/ВАША_ТЕМА/devcraft/notifications/
Отсутствующий файл берётся из Default. В настройках модуля задаются только пути к каталогам.
Плейсхолдеры подставляет ParseTemplateTags, не локальный str_replace.
Дерево
devcraft/notifications/
├── scenarios/ тело события
├── wrappers/ обёртка письма / ЛС
├── subscribe/ кнопки на сайте
├── item.tpl строка ленты
├── item_actions.tpl кнопка «Открыть»
├── item_side_mark_read.tpl «Прочесть» на стене (непрочитанные)
├── item_side_dismiss.tpl «Закрыть» в колокольчике
├── wall.tpl стена
├── badge.tpl колокольчик
├── assets/ css / js
└── …Сценарии (scenarios/)
| Файл | Когда |
|---|---|
news_update.tpl | подписчики news: новость изменена |
news_published.tpl | подписчики cat / user / tag / xfield / all: новая публикация |
moderation_approve.tpl | автору: материал одобрен |
moderation_reject.tpl | автору: снят с публикации |
comment_reply.tpl | ответ на комментарий |
comment_on_news.tpl | комментарий к вашей новости |
mention.tpl | упоминание @ник |
Теги сценариев и обёрток
Пишутся в scenarios/*.tpl и wrappers/*.tpl.
| Тег | Значение |
|---|---|
| {title} | заголовок новости |
| {full-link} | URL полной новости |
| {user} | автор новости (в mention — упомянутый ник) |
| {sender} | инициатор события |
| {message} | уже собранный текст сценария (в wrapper) |
| {unsubscribe-url} | подписанная ссылка отписки для письма/ЛС |
Если в событии есть строка новости, дополнительно доступны штатные теги DLE (shortstory / fullstory): {category}, {date}, {views}, [xfvalue_…] и т.д.
Пример сценария
scenarios/news_update.tpl:
Новость «{title}» была обновлена
{full-link}Пример письма
wrappers/email_body.tpl:
{message}<br><br>
<a href="{full-link}">Читать</a><br><br>
<a href="{unsubscribe-url}">Отписаться</a>Сначала рендерится сценарий → попадает в {message} → обёртка email_body.tpl или pm_body.tpl.
Тема письма и тема ЛС — строки настроек email_subject / pm_subject; там те же плейсхолдеры.
Пустой или отсутствующий сценарий/обёртка (ни в скине, ни в Default) — канал не отправляется.
Кнопки (subscribe/)
| Файл | Тип |
|---|---|
news.tpl | news |
cat.tpl | cat |
user.tpl | user |
tag.tpl | tag |
xfield.tpl | xfield |
all.tpl | all |
| Тег | Значение |
|---|---|
| {subscribe-label} | подпись кнопки |
| {subscribed} | 1 / 0 |
| {subscription-id} | id объекта |
| {subscription-type} | news, cat, … |
| {news-id} | id новости (для type=news) |
| {count} | число подписчиков |
| {user-hash} | хеш сессии DLE |
<button type="button"
class="dc-notify-subscribe"
data-type="news"
data-id="{subscription-id}"
data-subscribed="{subscribed}">
{subscribe-label}
</button>
<span>{count}</span>Класс dc-notify-subscribe обязателен для JS.
Лента на сайте
item.tpl
| Тег | Значение |
|---|---|
| {id} | id уведомления |
| {message} | текст |
| {date} | дата |
| {level} | info, success, … |
| {unread} | 1 / 0 |
| {unread-class} | is-unread / is-read |
| {verb} | код действия (updated, commented, …) |
| {actions} | HTML кнопки «Открыть» (из item_actions.tpl) |
| {side-action} | на стене — «Прочесть» (непрочитанные); в колокольчике — «Закрыть»; прочитанные на стене — пусто |
item_actions.tpl
| Тег | Значение |
|---|---|
| {object-url} | ссылка на объект |
| {open-label} | «Открыть» |
item_side_mark_read.tpl
| Тег | Значение |
|---|---|
| {mark-read-label} | «Прочесть» |
item_side_dismiss.tpl
| Тег | Значение |
|---|---|
| {dismiss-label} | «Закрыть» |
wall.tpl
| Тег | Значение |
|---|---|
| {items} | HTML списка |
| {mark-all-label} | «Прочитать все» |
| {empty-label} | пустой список |
badge.tpl
| Тег | Значение |
|---|---|
| {unread-count} | непрочитанные |
| {items} | короткий список |
| {mark-all-label} | «Прочитать все» |