是否可以比较TypoScript中的变量?

时间:2011-08-19 19:49:12

标签: typoscript

是否可以比较TypoScript中的变量?如果有可能 - 那么如何?

3 个答案:

答案 0 :(得分:3)

我在同样的问题上挣扎,所以这就是我发现的。我试图包含一个插件,但只有在已经设置某个TypoScript配置变量的情况下才能使用TypoScript条件,因为这些变量无法访问TypoScript变量!

所以真正走的路是不祥的if-function。文档说明如下:

  

如果满足所有当前条件(它们是AND),则此函数返回true。如果单个条件为false,则返回的值为false。

他们所做的提及的是,如果if - 函数返回false,则有问题的元素不会被显示/执行或TypoScript实际上做的任何事情,例如:

10 = TEXT
10.value = foobar
10.if.value = 42
10.if.equals = 24

此TEXT元素永远不会显示,因为条件不会评估为true。但是,将显示以下内容:

10 = TEXT
10.value = foobar
10.if.value = 42
10.if.isGreaterThan = 24

if.value始终保存您要比较的值,然后您可以使用一堆属性来比较另一个值。

文档中唯一的好例子就是这个:

  

这是一个GIFBUILDER对象,如果字段“newUntil”的日期小于当前日期,它将在菜单项上写“NEW”!

...
30 = TEXT
30.text = NEW!
30.offset = 10,10
30.if {
    value.data = date: U
    isLessThan.field = newUntil
    negate = 1
}
...

但要注意......这些属性在任何元素类型上都不可用(USER_INT例如,没有它们)

我所做的解决方法是将USER_INT包裹在COA中,如下所示:

config.enableMyStuff = 1
page.20 = COA
page.20 {
    10 =< plugin.tx_myextension_pi1
    if.value < config.enableMyStuff
    if.equals = 1
}

答案 1 :(得分:0)

您可以使用equals-keyword比较变量。如果你的typoscript是

10.value = 10

然后你可以指定一个

10.equals = 10

和条件

10.iftrue = 20

对不起,这是我的记忆,但你可以在typoscript手册中阅读。我想说这是一个使用相邻树模型的递归数据结构。这是一个链接:http://typo3.org/documentation/document-library/core-documentation/doc_core_tsref/4.5.0/view/1/5/#id2621713

答案 2 :(得分:0)

正常TypoScript "globalString" condition和常数:

是可能的
[globalString = LIT:foobar = {$some.typoscript.constant}]
    ...
[global]