Drupal 9:如何让设为认证用户权限的菜单链接对匿名用户可见
Drupal 9 实现匿名用户可见菜单链接但访问受限的方案
一、用自定义钩子实现
Drupal 默认菜单链接的可见性会继承对应页面的访问权限,要打破这个关联,你可以通过自定义模块的钩子单独控制菜单链接的显示权限:
- 新建或打开你的自定义模块的
.module文件,添加以下代码:
/** * Implements hook_menu_link_alter(). */ function 你的模块名_menu_link_alter(&$link) { // 替换成你的视图页面路径,比如 '/my-secret-page' if ($link['link_path'] == '你的视图页面路径') { // 设置所有用户(包括匿名)都能看到这个菜单链接 $link['access callback'] = TRUE; } }
- 替换代码里的「你的模块名」和「你的视图页面路径」,保存后清空 Drupal 缓存。
这样菜单链接会对匿名用户可见,点击后视图页面本身的「仅认证用户」权限依然生效,匿名用户会看到「访问被拒绝」的提示。
二、用贡献模块实现
如果不想写代码,这两个模块可以帮你快速实现需求:
- Menu Link Access:这个模块允许你给每个菜单链接单独设置访问权限,和页面本身的权限完全独立。安装后编辑菜单链接时,会出现单独的权限配置项,直接给匿名用户勾选「查看此菜单链接」的权限即可。
- Menu Per Role:专门针对角色控制菜单可见性的模块,编辑菜单链接时可以选择哪些角色能看到该链接,勾选「匿名用户」,同时保持视图页面的访问权限不变。
注意:如果是视图自动生成的菜单链接,部分模块可能需要你先把它转换成自定义菜单链接再进行权限设置,操作前记得清空缓存。
内容的提问来源于stack exchange,提问作者sethuraman
相关产品推荐
相关产品推荐

