Jump to content

Подписка на элемент контента

Как реализовать возможность подписываться

Примечание: ваше приложение также должно реализовать поиск (\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;

 




Messenger

    ×
    ×
    • Create New...

    Important Information

    By using our site you agree to our Privacy Policy