TYPO3网站无障碍优化:菜单title属性冗余问题求助
解决TYPO3 Bootstrap Package导航项Title属性冗余的无障碍问题
你的问题核心是title属性文本与链接文本完全重复,这违反了无障碍设计原则——重复的title不会给屏幕阅读器用户提供额外价值,反而会造成冗余朗读,所以WAVE工具会触发提示。以下是针对Bootstrap Package的两种解决方式:
方法1:通过TypoScript禁用重复的Title属性
在你的站点TypoScript配置中,找到导航菜单的生成规则(通常是lib.navbar或对应导航对象),修改TMENU的状态配置(NO/ACT/IFSUB等),取消自动生成重复的title属性:
lib.navbar = HMENU lib.navbar { 1 = TMENU 1 { NO { # 仅当页面的"导航标题"与"页面标题"不同时,才输出title属性 titleText.field = nav_title // title stdWrap.ifEmpty = # 或者直接禁用title属性输出(如果不需要额外提示) # title = } ACT < .NO IFSUB < .NO } }
方法2:修改Fluid模板移除冗余Title
Bootstrap Package使用Fluid模板渲染导航,找到导航项的模板文件(路径通常为EXT:bootstrap_package/Resources/Private/Partials/Navigation/Item.html),修改<a>标签的title属性输出逻辑:
原模板代码片段:
<a href="{item.link}"{f:if(condition: item.target, then: ' target="{item.target}"')}{f:if(condition: item.title, then: ' title="{item.title}"')} class="nav-link{f:if(condition: item.active, then: ' active')}{f:if(condition: item.children, then: ' dropdown-toggle')}" aria-haspopup="true" aria-expanded="false"> <span class="nav-link-text">{item.title}</span> </a>
修改后(直接移除冗余title):
<a href="{item.link}"{f:if(condition: item.target, then: ' target="{item.target}"')} class="nav-link{f:if(condition: item.active, then: ' active')}{f:if(condition: item.children, then: ' dropdown-toggle')}" aria-haspopup="true" aria-expanded="false"> <span class="nav-link-text">{item.title}</span> </a>
如果需要保留有额外信息的title,可以添加判断逻辑,仅当title与链接文本不同时才输出:
<a href="{item.link}"{f:if(condition: item.target, then: ' target="{item.target}"')}{f:if(condition: item.title != item.linkText, then: ' title="{item.title}"')} class="nav-link{f:if(condition: item.active, then: ' active')}{f:if(condition: item.children, then: ' dropdown-toggle')}" aria-haspopup="true" aria-expanded="false"> <span class="nav-link-text">{item.linkText}</span> </a>
核心原则
无障碍设计中,title属性仅用于提供链接文本之外的补充信息(比如长链接的简短说明),当它与链接文本完全一致时,完全没有保留的必要,移除后即可通过WAVE的检测。
内容的提问来源于stack exchange,提问作者Ralho
相关产品推荐
相关产品推荐

