TYPO3 8.7子菜单无页面显示问题求助
TYPO3 8.7子菜单仅显示|的修复方案
问题分析
你的子菜单代码渲染后仅显示<ul class="nav nav-list" id="sidebar-nav">|</ul>,说明COA容器内的10(父级标题)和20(HMENU菜单)均未输出有效内容,核心原因可能是页面配置、TypoScript参数错误或拼写问题。
修复步骤
1. 检查页面基础配置
- 确认要展示的所有页面均已勾选在菜单中显示(页面属性 → 行为 → 在菜单中显示)
- 确认页面未被隐藏(页面属性 → 行为 → 隐藏),且处于生效时间范围内(开始/结束时间未过期)
2. 修正TypoScript拼写错误
在2级菜单配置中,存在拼写错误:
# 错误代码 IFUSB < .1.IFSUB # 修正为 IFSUB < .1.IFSUB
3. 调整HMENU的entryLevel参数
entryLevel = 1表示从网站结构的第1级(根页面直接子页面)生成菜单,若当前页面不在该层级下,会导致无内容输出。根据需求选择合适的参数:
- 要显示当前页面的直接子菜单:设置
entryLevel = -1 - 要显示当前页面所在层级的兄弟页面及子菜单:设置
entryLevel = level:0 - 要固定显示第1级页面的子菜单:保留
entryLevel = 1,但需确保第1级页面存在且可在菜单中显示
4. 确保父级标题(10)的有效性
给10添加判断,仅当存在第1级页面时才输出:
10 = TEXT 10.wrap = <li class="list-group-item">|</li> 10.data = leveltitle:1 10.typolink.parameter.data = leveluid:1 # 添加判断,避免无内容时输出空li 10.if { value.data = leveluid:1 isGreaterThan = 0 }
5. 简化HMENU调试
如果以上调整后仍无内容,可先简化HMENU配置,验证基础输出:
20 = HMENU 20 { entryLevel = -1 # 根据需求修改 1 = TMENU 1 { NO = 1 NO.wrap = <li>|</li> } }
若简化版能输出菜单,再逐步恢复原有的样式、CUR/ACT等配置。
完整修正后的代码示例
lib.subnav = COA lib.subnav { wrap = <ul class="nav nav-list" id="sidebar-nav">|</ul> 10 = TEXT 10.wrap = <li class="list-group-item">|</li> #10.wrap { # override = <li class="list-group-item current">|</li> # override.if { # value.data = field:uid # equals.data = leveluid:1 # } #} 10.data = leveltitle:1 #10.data = levelfield:1,nav_title // leveltitle:1 10.typolink.parameter.data = leveluid:1 # 添加判断确保有内容才输出 10.if { value.data = leveluid:1 isGreaterThan = 0 } 20 = HMENU 20.wrap = | 20 { entryLevel = -1 # 改为-1显示当前页面子菜单,根据需求调整 1 = TMENU 1 { wrap = | expAll = 0 NO = 1 NO.allWrap > NO.wrapItemAndSub = <li class="list-group-item">|</li> CUR = 1 CUR < .NO CUR.wrapItemAndSub = <li class="list-group-item active current">|</li> ACT = 1 ACT < .CUR ACT.wrapItemAndSub = <li class="list-group-item active">|</li> # Dropdown menu IFSUB = 1 IFSUB < .NO IFSUB.wrapItemAndSub = <li class="list-group-item">|</li> IFSUB.ATagBeforeWrap = 1 IFSUB.stdWrap.wrap = | CURIFSUB = 1 CURIFSUB < .IFSUB CURIFSUB.wrapItemAndSub = <li class="list-group-item active current">|</li> ACTIFSUB = 1 ACTIFSUB < .IFSUB ACTIFSUB.wrapItemAndSub = <li class="list-group-item active">|</li> } 2 = TMENU 2 { wrap = <ul class="list-group">|</ul> expAll = 0 NO = 1 NO.allWrap > NO.wrapItemAndSub = <li class="list-group-item">|</li> ACT = 1 ACT < .NO ACT.wrapItemAndSub = <li class="list-group-item active">|</li> CUR = 1 CUR < .ACT CUR.wrapItemAndSub = <li class="list-group-item active current">|</li> # 修正拼写错误 IFSUB < .1.IFSUB ACTIFSUB < .1.ACTIFSUB CURIFSUB < .1.CURIFSUB SPC = 1 SPC.doNotLinkIt = 1 SPC.doNotShowLink = 1 SPC.allWrap = <li class="divider"></li> } 3 < .2 # no submenus anymore 3.IFSUB > 3.ACTIFSUB > } }
内容的提问来源于stack exchange,提问作者Jeppe Donslund
相关产品推荐
相关产品推荐

