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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 07:48:32