【问题标题】:Hide menu items for anonymous users in Drupal 8在 Drupal 8 中隐藏匿名用户的菜单项
【发布时间】:2016-04-26 13:32:35
【问题描述】:

如何在 drupal 8 中隐藏匿名用户的菜单项? 由于 hook_translated_link_alter 已被弃用,哪些钩子可用于执行任务?

【问题讨论】:

    标签: drupal-8 menu-items


    【解决方案1】:

    您需要覆盖/扩展 DefaultMenuLinkTreeManipulators 类以提供角色作为对菜单项的访问权限。 命名空间是Drupal\Core\Menu\DefaultMenuLinkTreeManipulators;

    您可以使用menu per role 模块来设置基于角色的菜单项访问权限

    【讨论】:

      【解决方案2】:

      您的菜单项将有一个绑定到它们的特定路径。在您的 .routing.yml 文件中,您可以设置路由的权限,该权限将被传递到链接。

      快速示例:假设我们创建了一个指向以下路由的链接:

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

      在这里,“访问个人资料内容”是一个自定义权限,但它是什么权限并不重要。您的链接也将获得此权限,当用户无权访问链接背后的内容时,Drupal 将隐藏您的链接。

      希望对你有帮助

      【讨论】:

      • 任何具有相同稳定版本的自定义模块?
      • 这是一个很好的答案,但它仅在链接对应于路线时才有效。我有兴趣看到适用于外部链接的解决方案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多