Создание расширения
Первым шагом является создание расширения уведомлений. В Центре разработчика для вашего приложения перейдите на вкладку Extensions > Core и нажмите кнопку "+" справа от пункта Notifications. Будет создан файл в директории вашего приложения extensions/core/Notifications с изначальным скелетом. Откройте этот файл и следуйте инструкциям в нем, чтобы добавить свои типы уведомлений на страницу Настройки уведомлений и создать метод (-ы), который будет контролировать то, что будет отображено пользователю, когда он кликнет на иконку уведомлений в шапке сайта.
Создание e-mail шаблона
Вы должны создать e-mail шаблоны для тех случаев, когда пользователь включил возможность получать e-mail письма при получении уведомления. Следуйте инструкциям, приведенным в шагах 1-2 руководства по отправке e-mail сообщений. Для ваших шаблонов в качестве ключа используйте notification_key, где key это ключ уведомления, указанный вами в методе getConfiguration()). Например: тип уведомления new_status (в приложении core) использует e-mail шаблоны notification_new_status, которые для этого объекта используют строку языка mailsub__core_notification_new_status.
Отправка уведомления
Фактический код для отправки уведомления очень прост:
$notification = new \IPS\Notification( \IPS\Application::load('app'), 'key', $item, $params );
$notification->recipients->attach( \IPS\Member::load(1) );
$notification->send();
- $item - Должен быть объект того, о чём отправляется уведомление, что используется для предотвращения отправки одного и того же уведомления более одного раза или NULL, если это не применимо. Если это элемент контента (не обязательно, но будем так считать), уведомление автоматически удалит получателя, если у него нет разрешения на чтение элемента или игнорируется пользователь, который его опубликовал.
- $params - Любые параметры, которые вы хотите передать шаблону электронной почты.
Вы вызываете $notification->recipients->attach() для каждого пользователя, которому хотите отправить уведомление, передавай объект \IPS\Member.