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
相关产品推荐
相关产品推荐

