Скрыть пункты меню для анонимных пользователей в 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 будет скрывать вашу ссылку, когда у пользователя нет разрешения на доступ к содержимому, стоящему за ней.
Надеюсь это поможет