Jump to content

Маркеры прочитанности элемента контена

Реализация маркеров прочитанности в Элементах Контента

Маркеры прочитанности контента позволяют пользователям легко видеть, какие элементы контента уже были просмотрены с помощью небольшой иконки в списке контента. Они являются стандартной функцией Invision Community и вы должны реализовать их, если ваше приложение каким-либо образом связано с пользовательским контентом.

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

Во-первых, ваша модель элемента контента должна реализовать интерфейс маркера прочитанности, например:

implements \IPS\Content\ReadMarkers

Затем вы должны добавить ключ в свойство $databaseColumnMap вашей модели. Ключ (и), который вы должны использовать, зависит от других функций, которые вы можете реализовать, но во всех случаях значение должно быть именем столбца базы данных, который хранит unix-время для соответствующего действия.

  • Добавьте ключ updated.
  • Добавьте ключ last_comment, если вы используете комментарии.
  • Добавьте ключ last_review, если вы используете отзывы.

Наконец, убедитесь, что, когда пользователь просматривает элемент, учитывается маркировка прочитанности. В методе manage() вашего контроллера вы должны вызвать родительский метод:

parent::manage();

или вручную вызвать $item->markRead() для запуска действия маркировки.

Дополнительные доступные методы модели

Примечание: Чтобы использовать методы containerUnread() и markContainerRead(), описанные ниже, ваша модель ноды контейнера должна реализовать следующие методы. Дополнительную информацию см. в руководстве Контейнеры.

  • get__items()
  • get__comments()
  • setLastComment()
  • getLastCommentTime()

boolean static containerUnread( \IPS\Node\Model $container [, \IPS\Member $member ] )

Указывает, имеет ли указанный контейнер (включая дочерние) какой-либо непрочитанный контент для пользователя.

  • $container (\IPS\Node\Model, обязательный) - контейнер для проверки.
  • $member (\IPS\Member, необязательный) - Пользователь, чей статус прочитанности должен проверяться. По умолчанию будет использоваться текущий авторизованный пользователь.

void static markContainerRead( \IPS\Node\Model $container [, \IPS\Member $member [, boolean $children ] ] )

Помечает контейнер (и, необязательно, потомков) как прочитанный.

  • $container (\IPS\Node\Model, обязательный) - Контейнер для маркировки прочтения.
  • $member (\IPS\Member, необязательный) - Пользователь, чей статус прочитанности должен быть изменён. По умолчанию будет использоваться текущий авторизованный пользователь.
  • $children (boolean, необязательный, по умолчанию TRUE) - Должны ли потомки контейнера стать также прочитанными?

integer unread( [ \IPS\Member $member ] )

Возвращает целое число, указывающее статус прочтения элемента. Возвращаемые значения:

  • 0 если элемент прочитан.
  • -1 если элемент не прочитан и никогда не читался.
  • 1 если элемент не прочитан, но был прочитан ранее (т. е. с момента последнего прочтения появилась новая активность). Применяется только при использовании комментариев.

 

  • $member ( \IPS\Member, необязательный ) - Пользователь, чей статус прочитанности должен проверяться. По умолчанию будет использоваться текущий авторизованный пользователь.

void markRead( [ \IPS\Member $member [, integer $time [, mixed $extraContainerWhere ] ] ] )

Помечает элемент как прочитанный.

  • $member (\IPS\Member, необязательный) - Пользователь, чей статус прочитанности должен быть обновлён. По умолчанию будет использоваться текущий авторизованный пользователь.
  • $time (integer, необязательный) - unix-время для установки как 'последнее прочтение'. По умолчанию, или если передан NULL, будет использовано текущее время.

$extraContainerWhere (mixed, необязательный) - массив или строка, содержащая дополнительные операторы WHERE, которые должны быть переданы в базовый запрос.

\IPS\DateTime timeLastRead( [ \IPS\Member $member ] )

Возвращает объект DateTime, указывающий на последнее прочтение элемента пользователем (или NULL, если элемент ещё не прочитан)

  • $member (\IPS\Member, необязательный) - Пользователь, чьё время последнего прочтения должно быть возвращено. По умолчанию будет использоваться текущий авторизованный пользователь.

 




Messenger

    ×
    ×
    • Create New...

    Important Information

    By using our site you agree to our Privacy Policy