Как реализовать закрепление
Чтобы поддерживать закрепление элементов контента в вашей модели, вам необходимо реализовать следующий интерфейс:
implements \IPS\Content\Pinnable
Затем вы должны добавить ключ закрепления в свойство $databaseColumnMap, со значением, которое является именем столбца базы данных, хранящего статус закрепления вашего элемента.
Ну и наконец, вам нужно добавить поддержку в ваши шаблоны. Например:
{{if $item->canPin()}} <a href='{$item->url()->setQueryString( array( 'do' => 'moderate', 'action' => 'pin' ) )}'>{lang="pin"}</a> {{endif}} {{if $item->canUnpin()}} <a href='{$item->url()->setQueryString( array( 'do' => 'moderate', 'action' => 'unpin' ) )}'>{lang="unpin"}</a> {{endif}}
Изменения после реализации
- Закреплённые элементы будут отображаться вверху списка элементов контента.
- Модераторы с соответствующим разрешением смогут видеть и использовать инструменты для закрепления контента при выборе элементов в списке элементов контента.
Дополнительные доступные методы модели
boolean canPin( \IPS\Member $member )
Указывает, имеет ли пользователь разрешение на закрепление элементов. Этот метод учитывает, был ли элемент уже закреплен.
- $member (\IPS\Member, optional) - Если предоставлено, будут проверять разрешения данного пользователя. По умолчанию, будет использован текущий авторизованный пользователь.
boolean canUnpin( \IPS\Member $member )
Указывает, имеет ли пользователь разрешение откреплять элементы. Этот метод учитывает, является ли элемент уже незакрепленным.
- $member (\IPS\Member, optional) - Если предоставлено, будут проверять разрешения данного пользователя. По умолчанию, будет использован текущий авторизованный пользователь.