如何为TYPO3 12.4.9模板编写语言判断条件?
TYPO3 Fluid 根据语言ID切换内容的正确实现
原代码的问题点
- 条件表达式写法错误:Fluid中变量和常量比较时,常量不需要用大括号包裹,正确写法是
{siteLanguage.languageId} == 0而非{siteLanguage.languageId}=={1} - 语法结构错误:Fluid的
<f:if>不支持<f:if else>这种嵌套写法,正确分支结构应使用<f:else>,针对多语言ID场景,用<f:switch>会更清晰
解决方案1:使用多层<f:if>判断
<f:if condition="{siteLanguage.languageId} == 0"> <f:then> <div>默认语言(ID:0)</div> </f:then> <f:else> <f:if condition="{siteLanguage.languageId} == 2"> <f:then> <div>语言2(ID:2)</div> </f:then> <f:else> <f:if condition="{siteLanguage.languageId} == 3"> <f:then> <div>语言3(ID:3)</div> </f:then> <f:else> <div>其他语言</div> </f:else> </f:if> </f:else> </f:if> </f:else> </f:if>
解决方案2:使用<f:switch>(更简洁推荐)
针对多分支的语言判断,<f:switch>结构更清晰,是更合适的选择:
<f:switch expression="{siteLanguage.languageId}"> <f:case value="0"> <div>默认语言(ID:0)</div> </f:case> <f:case value="2"> <div>语言2(ID:2)</div> </f:case> <f:case value="3"> <div>语言3(ID:3)</div> </f:case> <f:defaultCase> <div>其他语言</div> </f:defaultCase> </f:switch>
注意事项
- 确保
siteLanguage变量在模板中可访问:TYPO3 12.x中该变量默认在前端模板可用,若在后端模块模板中需手动传递 - 语言ID取值要和系统配置一致,确认系统实际语言ID为0、2、3
内容的提问来源于stack exchange,提问作者Tony
相关产品推荐
相关产品推荐

