Как реализовать возможность подписываться
Примечание: ваше приложение также должно реализовать поиск (\IPS\Content\Searchable) для возможности реализовать подписку.
Сперва вы должны реализовать интефрейс подписки в вашей модели элемента контента, например:
implements \IPS\Content\Followable
Затем вам нужно вставить конструкцию в шаблон, которая покажет кнопку Подписаться, в ваши ноды и сами элементы контента. В просмотр ноды (например просмотр форума), вставьте данный тег:
{template="follow" app="core" group="global" params=“'yourApp','yourNodeClass', $node->_id, \IPS\yourApp\YourContentClass::containerFollowers( $node )->count( TRUE )"}
Параметры в этом теге:
- yourApp - ключ вашего приложения.
- yourNodeClass - имя класса вашей ноды контейнера.
- $node->_id - ID вашего контейнера (например форум, в приложении "Форумы").
- Последний параметр должен статически вызывать containerFollowers (смотрите ниже) в вашем классе элемента, чтобы передать текущее количество подписчиков.
в шаблон просмотра элемента контента (например просмотр темы), вставьте следующий тег:
{template="follow" app="core" group="global" params="'yourApp', 'yourContentItemClass', $item->id, $item->followersCount()"}
Параметры:
- yourApp - ключ вашего приложения.
- yourContentItemClass - название класса вашего элемента контента.
- $item->id - ID соответствующего элемента контента.
- Последний параметр просто вызывает $item->followersCount() для передачи текущего количества подписчиков.
Изменения после реализации
- После публикации нового элемента контента, пользователи, подписанные на ноду, в которой размещён элемент, получат уведомление. Если контент должен быть одобрен модератором, уведомления будут отложены до тех пор, пока контент не будет одобрен.
Дополнительные доступные методы модели
integer static containerFollowers( \IPS\Node\Model $node [, integer $privacy [, array $frequencyTypes [, \IPS\DateTime $date [, integer|array $limit [, string $order [, integer $flags ] ] ] ] ] ] )
Возвращает подписчиков ноды.
- $node (\IPS\Node\Model, обязательный) - Нода, из которой будут возвращены подписчикии.
- $privacy (integer, необязательный, по умолчанию 3) - Поразрядное значение, представляющее типы подписки, которые должны быть возвращены (смотрите ниже для получения дополнительной информации). Значение по умолчанию 3 включает как анонимных, так и публичных подписчиков.
- $frequencyTypes (array, необязательный, по умолчанию array( 'none', 'immediate', 'daily', 'weekly' ) ) - Позволяет вам сузить возвращаемых подписчиков до определённых типов подписок. По умолчанию учитываются все типы.
- $limit (integer or NULL, необязательный, по умолчанию NULL) - Позволяет ограничить количество возвращаемых подписчиков. Значение передаётся в виде параметра LIMIT в результирующий запрос.
- $order (string, необязательный, по умолчанию NULL) - Позволяет вам определить столбец, по которому будут упорядочены результаты.
- $flags (integer or NULL, необязательный, по умолчанию NULL) - SQL флаги, которые будут переданы в \IPS\Db при выполнении базового запроса.
Побитовые значения приватности подписок
Конфигурация конфиденциальности подписок позволяет пользователю указать, какой должна быть подписка - 'публичной' или 'анонимной', то есть его подписка будет учтена при подсчёте общего количества подписчиков, но не будет показано имя подписчика. Значения:
const FOLLOW_PUBLIC = 1;
const FOLLOW_ANONYMOUS = 2;