TYPO3技术咨询:嵌套globalVar常量条件与多LIT:X使用方法
TYPO3 TypoScript 条件与LIT嵌套问题解决方案
嘿,这两个TYPO3 TypoScript的问题我刚好有经验,来给你梳理下解决方案!
问题1:如何在TYPO3中使用嵌套的globalVar常量条件?
TYPO3的TypoScript条件完全支持嵌套写法,这刚好能满足你“constantY仅在constantX已设置时生效”的需求。你可以通过多层条件块嵌套来实现这种依赖关系,外层判断constantX是否生效,内层再判断constantY的状态。
示例代码:
# 先判断constantX是否满足条件 [globalVar = LIT:1 = {$plugin.extension.constantX}] # 这里添加constantX对应的模板路径配置 plugin.tx_yourextension.view.templateRootPaths.10 = EXT:yourextension/Resources/Private/Templates/X/ # 嵌套判断:只有当constantX生效时,才会检查constantY [globalVar = LIT:1 = {$plugin.extension.constantY}] # 这里添加constantY对应的模板路径配置(仅在constantX生效时执行) plugin.tx_yourextension.view.templateRootPaths.20 = EXT:yourextension/Resources/Private/Templates/Y/ [global] [global]
当然,如果你不需要区分“仅X生效”和“X+Y都生效”的不同配置,也可以用逻辑运算符&&把两个条件合并到同一个globalVar里:
[globalVar = LIT:1 = {$plugin.extension.constantX} && LIT:1 = {$plugin.extension.constantY}] # 同时满足两个常量条件时的配置 [global]
问题2:能否在TypoScript中嵌套多个LIT:X?
首先要纠正你之前的写法错误:不能用&&直接连接两个独立的[globalVar]条件块,这不符合TypoScript的条件语法规范。但你完全可以在同一个globalVar条件里使用多个LIT:表达式,通过逻辑运算符组合,或者像上面那样用嵌套条件块来实现“多条件依赖”。
你之前写的无效代码:
# 错误写法:不能直接用&&连接两个条件块 [globalVar = LIT:1 = {$plugin.extension.constantX}] && [globalVar = LIT:1 = {$plugin.extension.constantY}] ... [global]
正确的替代写法就是上面提到的嵌套条件块或者单条件块内的逻辑组合,这两种方式都能实现你需要的“constantY依赖constantX”的规则,同时正确使用LIT:来做字面量比较(避免TYPO3把常量值误解析为变量)。
内容的提问来源于stack exchange,提问作者Naderio
相关产品推荐
相关产品推荐

