Работа с уведомлениями
Как вы наверное уже знаете, в JohnCMS начиная с версии 9.2 появились улучшенные уведомления. Давайте разберемся как они работают и научимся добавлять свои уведомления.
Для работы уведомлений существует таблица в базе данных, которая называется notifications. Она хранит все уведомления для всех пользователей сайта.
Рассмотрим поля, которые доступны в таблице уведомлений:
Наименование | Описание |
id | Идентификатор уведомления |
module | Наименование модуля, который добавил уведомление. (обязательное поле) |
event_type | Наименование типа события, из-за которого отправоено уведомление. (обязательное поле) |
user_id | Пользователь, для которого предназначено уведомление. (обязательное поле) |
sender_id | Идентификатор пользователя, который инициировал отправку уведомления. (не обязательно) |
entity_id | Идентификатор сущности к которой привязано уведомление. (например сообщение на форуме из-за которого было отправлено уведомление). Не обязательное поле. |
fields | Массив полей, которые будут доступны в шаблоне уведомления. |
read_at | Время прочтения уведомления. |
Принцип работы уведомлений:
Какой либо модуль добавляет уведомление в систему, привязывая его к модулю, типу события и пользователю, которому предназначено это уведомление.
Когда пользователь открывает сайт, для него выполняется выборка уведомлений у которых поле read_at = NULL. (т.е. не прочитанные).
После того как пользователь заходит на страницу уведомлений, ему формируется список в соответствии с заданным шаблоном, далее показанные на странице уведомления помечаются прочитанными.
Добавление уведомлений:
Уведомления обязательно должны иметь наименование модуля, тип события и пользователя, которому они предназначены.
Рассмотрим пример добавления уведомления:
Этот код добавит уведомление для модуля my_the_best_module и события с типом my_module_event1.
Для чего же нам нужно название модуля и тип события? Это нужно для того, чтобы отображать уведомления в соответствии с заданным шаблоном.
Шаблоны уведомлений:
Шаблоны уведомлений настраиваются в файле config/notifications.local.php. Если у вас нет этого файла, переименуйте файл notifications.local.php.example в notifications.local.php
Файл с шаблонами должен иметь следующую структуру:
Как мы видим, тут используется название модуля и тип события.
Давайте посмотрим как выглядит наше уведомление, которое мы добавили выше.
Как видно на скриншоте, вывелось уведомление с типом my_module_event1. В тексте уведомления заменилась макропеременная #variable# на ту, которую мы подавали при создании уведомления в массиве fields.
Last updated