Модуль позволяет пользователю подписываться на объект (а не на компонент в разделе в целом). В этом случае пользователь будут получать уведомления о событиях, произошедших с данным объектом или с другими объектами, логически связанными с ним.
Приведем простой пример: на сайте имеется блог, к сообщениям которого пользователи могут добавлять комментарии. Необходимо, чтобы читатели смогли отслеживать комментарии по определённому посту. Если просто организовать рассылку по компоненту с комментариями, то подписанные пользователи будут получать все новые комментарии (вне зависимости от того, к какому посту принадлежит комментарий), что неприемлемо, но мы может позволить пользователям подписаться на конкретный пост (на конкретный объект) и при добавлении нового комментария к посту вставлять объект с новоиспечённым комментарием в очередь рассылок для данного пользователя. Логическую связь между объектами и условием добавления объекта в рассылку определяет сам разработчик. Заметим, что подписка на объект относится к типу рассылок «подписка на раздел».
Рассмотрим пример реализации задачи, описанной выше.
Для определённости будем считать, что у нас есть компоненты «Блог», «Комментарии к блогу» (у этого компонента есть поля «Text» - текст комментария, «Post_ID» - номер поста из компонента «Блог», к которому относится комментарий), а так же созданы разделы с этими компонентами.
Для начала нужно создать рассылку, назовем её «Комментарии к блогу», тип рассылки — «подписка на раздел», в специфических настройках нужно указать номер компонента с блогом (ведь подписка идет на объекты именно этого компонента), параметр «Добавлять объект в рассылку при» нужно оставить пустым, мы сами будем вызывать функцию для добавления объекта в рассылку. Для простоты заполним содержательную часть письма следующим кодом:
Новый комментарий:<br/> <?=$f_Text?> <br/>
Вы так же можете заполнить остальные поля из шаблона письма и условий рассылки.
Далее необходимо вывести ссылку для подписки на объект. Ссылка на подписку на объект выглядит следующим образом:
http://название_сайта/раздел1/.../разделN/subscribe_ИмяКомпонентаВРазделе_НомерОбъекта.html
Такая ссылка доступна через переменную $subscribeMessageLink в объекте в списке компонента, а так же в отображении объекта. Итак, в шаблоне отображения объекта на отдельной странице компонента «Блог» пишем:
<a href="<?= $subscribeMessageLink; ?>">Отслеживать комментарии</a>
И наконец, необходимо добавлять объект с комментарием в очередь рассылок. В действие после добавления объекта в компоненте «Комментарии к блогу» нужно прописать следующий код:
// получаем объект для управления рассылками $nc_subscriber = nc_subscriber::get_object(); // добавляем объект в очередь рассылок $nc_subscriber->new_message ( $cc, $message, ХХ, $f_Post_ID );
Здесь: $cc, $message — номер компонента в разделе с комменариями и номер добавленного объекта (комментария) соответственно:
XX — номер инфоблока в разделе с компонентом «Блог».
О методе new_message рассказано далее.