Typo3 在条件中使用打字脚本变量

Typo3 在条件中使用打字脚本变量,typo3,typoscript,typo3-7.6.x,Typo3,Typoscript,Typo3 7.6.x,在打字脚本条件下是否可以使用打字脚本中定义的变量 例如,如果我定义这样的变量: my_var = 10 my_var = 10 [my_var = 10] # do something [else] # do something else [end] 我可以在打字脚本中创建一个条件来检查my_var是否等于10吗? 我想象这样的情况: my_var = 10 my_var = 10 [my_var = 10] # do something [else] # do something els

在打字脚本条件下是否可以使用打字脚本中定义的变量

例如,如果我定义这样的变量:

my_var = 10
my_var = 10
[my_var = 10]
# do something
[else]
# do something else
[end]
我可以在打字脚本中创建一个条件来检查
my_var
是否等于10吗? 我想象这样的情况:

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
lib.content=TEXT
lib.content.value=不应显示此文本
[globalVar=TSFE:id=1]
lib.content=文本
lib.content.value=这是第1页
[其他]
正常布局=1
[完]
[globalVar=LIT:1={$normal_layout}]
lib.content=文本
lib.content.value=这是任何其他页面
[完]
第页
第10页
理论上,这应该为第1页呈现“这是第1页”,为任何其他页呈现“这是任何其他页”。但是,尽管第1页呈现正确,但其他页面的情况并非如此。它们被渲染为“此文本不应显示”


有什么想法吗?我使用的是7.6版。这可能是问题所在吗?

编辑:对于第一个用例: 可以使用“文字”打字稿。请在中看到一个小提示。 你必须把常数和逻辑分开

因此,在常量中,您必须写入:

[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]

您的第二个用例并不十分清楚,但我建议您使用页面的基本定义,该定义在特定情况下会被覆盖。

谢谢您的回答。我在使用你的方法时遇到了问题。我已经更新了我的问题,我的测试代码。我总是编辑我的答案。我没有看到,您试图在设置中设置常量,这就是问题所在。我现在在我的一个项目上测试了我的解决方案,它正在工作。您只需要分离逻辑:在constants.ts中设置变量(常量),并在设置中使用呈现逻辑。ts@VanCodingre您的用例:您是否检测到具有该条件的页面类型?因为,后端布局可以很好地处理这个问题。参见,例如,遗憾的是,此解决方案对于TYPO3版本10已经过时。您找到解决方案了吗?@Andras Otto没有,但我最终解决了一个问题。遗憾的是,你的解决方案不起作用。在我的例子中,起始页应该呈现得非常特殊,但所有子页都应该使用布局正常呈现。但是由于子页面继承了父母的打字脚本,我想我需要一些条件。但由于这不起作用,我将起始页移动到子页,并将根页作为指向它的链接。成功了,酷!重要的是要为解决方案的未来提供一个提示,谢谢分享:)