2

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

4

3 回答 3

3

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

所以真正要走的路是不祥的if-function。该文档说明了以下内容:

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

他们没有提到的是,如果if-function 返回false,则有问题的 Element 不会显示/执行或 TypoScript 实际执行的任何操作,例如:

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

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

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_INTa包装COA如下:

config.enableMyStuff = 1
page.20 = COA
page.20 {
    10 =< plugin.tx_myextension_pi1
    if.value < config.enableMyStuff
    if.equals = 1
}
于 2011-08-29T11:34:25.040 回答
0

您可以使用等号关键字来比较变量。如果你的打字稿是

10.value = 10

然后你可以分配一个

10.equals = 10

和一个条件

10.iftrue = 20

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

于 2011-08-19T19:55:53.953 回答
0

使用普通的TypoScript “globalString” 条件和常量是可能的:

[globalString = LIT:foobar = {$some.typoscript.constant}]
    ...
[global]
于 2017-07-28T08:34:36.063 回答