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

Typo3中如何通过TypoScript为HMENU内的禁用页面添加disabled类

Typo3 给菜单隐藏页面添加disabled类的实现方案

步骤1:定位菜单TypoScript配置

找到你站点配置includeNotInMenu = 1的位置,该配置一般存放在站点模板的Setup字段中,通常是基于HMENU实现的主菜单配置块。

步骤2:添加类名判断逻辑

在菜单TMENU的NO(普通菜单项)配置块中,新增ATagParams条件判断:后台勾选「在菜单中隐藏」的页面对应的nav_hide字段值为1,判断该字段值为1时自动给链接添加class="disabled"属性。

原配置参考(你当前的配置大概结构)

lib.mainMenu = HMENU
lib.mainMenu {
  1 = TMENU
  1 {
    includeNotInMenu = 1
    NO = 1
    NO {
      # 原有其他配置,比如wrap、linkWrap等
      wrapItemAndSub = <li>|</li>
    }
  }
}

修改后的配置(新增逻辑仅多了ATagParams部分)

lib.mainMenu = HMENU
lib.mainMenu {
  1 = TMENU
  1 {
    includeNotInMenu = 1
    NO = 1
    NO {
      # 原有配置保留,新增下面这段判断逻辑
      ATagParams = class="disabled" {
        if.value = 1
        if.field = nav_hide
      }
      wrapItemAndSub = <li>|</li>
    }
  }
}

步骤3:添加对应的CSS样式

在站点全局CSS文件中添加如下样式,实现禁用点击的效果:

a.disabled {
  pointer-events: none;
  cursor: default;
  opacity: 0.6; /* 可选:添加半透明效果,视觉上更直观区分禁用状态 */
}

注意事项

  • 如果你使用的是多级菜单,每一级TMENU的NO配置块都需要添加上述ATagParams判断逻辑,比如2层级、3层级的菜单配置要同步修改
  • 修改TypoScript后必须清空Typo3全量缓存,前端刷新后配置才会生效
  • 如果你原有ATagParams已经配置了其他类名,可以用字符串拼接的方式避免覆盖原有配置,示例如下:
    NO {
      # 原有类是menu-link,动态拼接disabled类
      ATagParams = class="menu-link{field:nav_hide}"
      ATagParams {
        insertData = 1
        replacement {
          1 {
            search = 1
            replace =  disabled
          }
          2 {
            search = 0
            replace =
          }
        }
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:06:03