是否可以在TypoScript条件下使用TypoScript中定义的变量?
例如,如果我定义一个这样的变量:
my_var = 10
我可以在typoscript中创建一个检查my_var
是否等于10的条件吗?
我想象这样的事情:
my_var = 10
[my_var = 10]
# do something
[else]
# do something else
[end]
我需要这个的原因是缺乏嵌套条件。如果我要求的是可能的,我可以做这样的事情来克服这个限制:
[globalVar=TSFE:id=1]
# render special layout for page 1
[else]
normal_layout = 1
[end]
[normal_layout = 1] && [globalVar=TSFE:page|layout=1]
# render normal layout 1
[end]
[normal_layout = 1] && [globalVar=TSFE:page|layout=2]
# render normal layout 2
[end]
另一个用例是检查变量是否存在,例如,如果已经定义了page
。例如:
[globalVar=TSFE:id=1]
page = PAGE
page.10 = TEXT
page.10.value = hello page 1!
[end]
[!page]
page = PAGE
page.10 = TEXT
page.10.value = hello world!
[end]
我很惊讶文档已经没有回答:S
修改
我已尝试过Andreas Ottos的解决方案,但它似乎仍无效。这是我的示例代码:
lib.content = TEXT
lib.content.value = this text should not get displayed
[globalVar=TSFE:id=1]
lib.content = TEXT
lib.content.value = this is page 1
[else]
normal_layout = 1
[end]
[globalVar = LIT:1 = {$normal_layout}]
lib.content = TEXT
lib.content.value = this is any other page
[end]
page = PAGE
page.10 < lib.content
从理论上讲,这应该会导致这是第1页&#39;对于第1页和&#39;这是任何其他页面&#39;对于任何其他页面。但是,当第1页被正确呈现时,其他页面的情况并非如此。他们会使用&#39;这个文字不应该显示&#39;。
有什么想法吗?我使用的是7.6版本。这可能是问题吗?
答案 0 :(得分:2)
编辑:对于第一个UseCase: 使用TypoScript&#34; literal&#34;是可能的。请参阅doc here中的一个小提示。 而且你必须将常量与逻辑分开。
所以在常量中你必须写:
[globalVar=TSFE:id=1]
normal_layout = 0
[else]
normal_layout = 1
[end]
在设置部分,您可以使用此变量:
[globalVar = LIT:0 = {$normal_layout}]
# render special layout for page 1
[end]
[globalVar = LIT:1 = {$normal_layout}] && [globalVar=TSFE:page|layout=1]
# render normal layout 1
[end]
[globalVar = LIT:1 = {$normal_layout}] && [globalVar=TSFE:page|layout=2]
# render normal layout 2
[end]
你的第二个用例并不是很清楚,但我建议使用在特定情况下被覆盖的页面基本定义。