Typo3技术问题:为不同hmenu菜单项设置不同常量值
解决方案
下面是基于TypoScript实现需求的具体步骤和示例:
1. 定义常量并添加条件匹配
先初始化一个默认常量,再通过TypoScript条件匹配特定页面UID或菜单项UID,动态修改常量值:
# 初始化默认值 myDataAttribute = default-content # 匹配全局页面UID为123的场景 [page|uid = 123] myDataAttribute = page-123-custom-data [global] # 匹配当前菜单项UID为456的场景 [menuItem|uid = 456] myDataAttribute = menu-item-456-custom-data [global] # 多值匹配示例:页面UID为789或987时 [page|uid in 789,987] myDataAttribute = multi-target-custom-data [global]
2. 将常量绑定到hmenu的li标签data属性
在hmenu的TMENU配置中,通过wrap结合insertData解析常量,把值注入到li的data属性里:
lib.mainMenu = HMENU lib.mainMenu { 1 = TMENU 1 { # 普通未激活菜单项 NO = 1 NO { wrap = <li data-custom="{myDataAttribute}">|</li> # 开启变量解析,让{myDataAttribute}被替换为实际值 wrap.stdWrap.insertData = 1 } # 激活状态菜单项(复用常量逻辑) ACT = 1 ACT { wrap = <li class="active" data-custom="{myDataAttribute}">|</li> wrap.stdWrap.insertData = 1 } } }
额外说明
- 如果需要匹配菜单项对应的页面UID(而非菜单项自身UID),可以用
[menuItem|pageUid = xxx]作为条件 - 条件判断代码要放在hmenu配置之前,确保渲染菜单时常量已被正确赋值
insertData = 1是必须的,它会触发TypoScript对wrap中的变量占位符进行解析替换
内容的提问来源于stack exchange,提问作者iamrobertsillo
相关产品推荐
相关产品推荐

