Скрыть пункты меню для анонимных пользователей в Drupal 8

Как скрыть пункты меню для анонимных пользователей в drupal 8? Поскольку hook_translated_link_alter устарела, какие хуки можно использовать для выполнения задачи?

2 ответа

Вам необходимо переопределить / расширить класс DefaultMenuLinkTreeManipulators, чтобы обеспечить роль доступа к элементам меню. Пространство имен Drupal\Core\Menu\DefaultMenuLinkTreeManipulators;

ИЛИ ЖЕ

Вы можете использовать меню для каждого модуля роли, чтобы установить доступ на основе ролей для пунктов меню

Ваши пункты меню будут иметь определенный маршрут, связанный с ними. В вашем файле.routing.yml вы можете установить разрешения для вашего маршрута, которые будут перенесены на ссылку.

Быстрый пример: допустим, мы создали ссылку на следующий маршрут:

 profile.page:
  path: 'profile'
  defaults:
    _controller: '\Drupal\profile\Controller\ProfileController::profile'
    _title: 'Profile'
  requirements:
    _permission: 'access profile content'

Здесь "доступ к содержимому профиля" - это пользовательское разрешение, но не имеет значения, какое это разрешение. Ваша ссылка также получит это разрешение, и Drupal будет скрывать вашу ссылку, когда у пользователя нет разрешения на доступ к содержимому, стоящему за ней.

Надеюсь это поможет

Другие вопросы по тегам