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

Drupal 7 问题:激活菜单项缺失active-trail类

解决菜单active-trail类缺失的问题

从你给出的菜单结构来看,这个问题常见于Drupal的菜单系统(从菜单标记风格判断)——当前页面的菜单项及其父项已经带有active类,但缺失本该同步添加的active-trail类,下面是几个针对性的排查和修复方案:

当前处于Test2页面时的菜单树示例:

<ul class="menu"> 
  <li class="first expanded"> 
    <a href="/test" class="active">Test</a> 
    <ul class="menu"> 
      <li class="first expanded"> 
        <a href="/test2" class="active">Test2</a> 
      </li> 
    </ul> 
  </li> 
</ul>

1. 确认菜单层级配置正确性

  • 进入后台菜单管理界面,找到Test和Test2这两个菜单项,检查Test2的父项设置是否确实选择了Test,而非设置为独立的顶级菜单。系统依赖这个关联关系来生成active-trail类。
  • 同时确认两个菜单项的内部路径(不是路径别名)是否符合层级逻辑,比如Test对应内部路径/test,Test2对应/test/2这样的子路径(如果是自动关联层级的场景)。

2. 清除系统缓存

Drupal的菜单状态依赖缓存,缓存过期或未更新可能导致路径关联判断异常:

  • 可以通过后台操作:进入「配置 > 性能 > 清除所有缓存」完成缓存清理;
  • 如果使用Drush工具,直接执行命令:drush cache:rebuild快速重建缓存。

3. 排查主题/自定义模块的菜单预处理逻辑

如果你的主题或自定义模块有修改菜单输出的代码(比如hook_preprocess_menu()或hook_preprocess_menu_link()),可能不小心覆盖或移除了active-trail类:

  • 打开主题的.theme文件或自定义模块的.module文件,查找相关预处理函数;
  • 避免直接覆盖classes数组,应该用追加的方式添加自定义类,比如:
    错误示例(会覆盖原有类):
    function mytheme_preprocess_menu_link(&$variables) {
      $variables['attributes']['class'] = ['custom-menu-link'];
    }
    
    正确示例(保留原有类并追加):
    function mytheme_preprocess_menu_link(&$variables) {
      $variables['attributes']['class'][] = 'custom-menu-link';
    }
    

4. 检查权限与菜单可见性设置

  • 确保当前测试用户拥有Test和Test2页面的访问权限,菜单的可见性设置没有因为权限隐藏父项或子项——权限缺失可能导致系统无法正确识别菜单层级关联。

5. 排查路径别名干扰

如果使用了路径别名模块,确认别名设置没有破坏路径的层级关联:

  • 比如Test的别名是/test,Test2的别名是/test2,但内部实际路径并非层级关系的话,需要手动在菜单设置中指定父项,而不是依赖系统自动识别路径层级。

如果以上方案都无效,可以尝试禁用近期安装的模块,排查是否是模块冲突导致菜单逻辑异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:59:07