You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Drupal 9:如何让设为认证用户权限的菜单链接对匿名用户可见

Drupal 9 实现匿名用户可见菜单链接但访问受限的方案

一、用自定义钩子实现

Drupal 默认菜单链接的可见性会继承对应页面的访问权限,要打破这个关联,你可以通过自定义模块的钩子单独控制菜单链接的显示权限:

  1. 新建或打开你的自定义模块的 .module 文件,添加以下代码:
/**
 * Implements hook_menu_link_alter().
 */
function 你的模块名_menu_link_alter(&$link) {
  // 替换成你的视图页面路径,比如 '/my-secret-page'
  if ($link['link_path'] == '你的视图页面路径') {
    // 设置所有用户(包括匿名)都能看到这个菜单链接
    $link['access callback'] = TRUE;
  }
}
  1. 替换代码里的「你的模块名」和「你的视图页面路径」,保存后清空 Drupal 缓存。

这样菜单链接会对匿名用户可见,点击后视图页面本身的「仅认证用户」权限依然生效,匿名用户会看到「访问被拒绝」的提示。

二、用贡献模块实现

如果不想写代码,这两个模块可以帮你快速实现需求:

  • Menu Link Access:这个模块允许你给每个菜单链接单独设置访问权限,和页面本身的权限完全独立。安装后编辑菜单链接时,会出现单独的权限配置项,直接给匿名用户勾选「查看此菜单链接」的权限即可。
  • Menu Per Role:专门针对角色控制菜单可见性的模块,编辑菜单链接时可以选择哪些角色能看到该链接,勾选「匿名用户」,同时保持视图页面的访问权限不变。

注意:如果是视图自动生成的菜单链接,部分模块可能需要你先把它转换成自定义菜单链接再进行权限设置,操作前记得清空缓存。

内容的提问来源于stack exchange,提问作者sethuraman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:18:13