Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typo3 在打字脚本中生成多个if条件_Typo3_Typoscript_Typo3 8.7.x - Fatal编程技术网

Typo3 在打字脚本中生成多个if条件

Typo3 在打字脚本中生成多个if条件,typo3,typoscript,typo3-8.7.x,Typo3,Typoscript,Typo3 8.7.x,我想检查一个值上的两个字段以包装每个内容元素 要检查一个值,可以执行以下操作: 20 = TEXT 20.value = <div class="div1">|</div> 20.value.override = <div class="div2">|</div> 20.value.override.if.value = 10 20.value.override.if.equals.field = colPos 20=文本 20.1价值=| 20

我想检查一个值上的两个字段以包装每个内容元素

要检查一个值,可以执行以下操作:

20 = TEXT
20.value = <div class="div1">|</div>
20.value.override = <div class="div2">|</div>
20.value.override.if.value = 10
20.value.override.if.equals.field = colPos
20=文本
20.1价值=|
20.value.override=|
20.value.override.if.value=10
20.value.override.if.equals.field=colPos
我需要添加什么来检查像这样的第二个值

20 = TEXT
20.value = <div class="div1">|</div>
20.value.override = <div class="div2">|</div>
20.value.override.if.value = 10
20.value.override.if.equals.field = colPos
20.value.override.andIf.value = textmedia
20.value.override.andIf.equals.field = CType
20=文本
20.1价值=|
20.value.override=|
20.value.override.if.value=10
20.value.override.if.equals.field=colPos
20.value.override.andIf.value=textmedia
20.value.override.andIf.equals.field=CType
因此,如果CType是textmedia,colPos是10,那么content元素应该仅用div2包装。否则应使用div1。

通过使用连词的stdWrap属性,可以嵌套打字脚本“if”-条件。在您的案例中,文档中说,条件与AND连接。因此,您只需要使用另一个条件的stdWrap属性(让我们使用isTrue),并通过使用stdWrap的cObject属性将其设置为文本对象。然后,您可以在cObject中放置另一个“equals”条件,如果满足该条件,该条件将返回“1”到isTrue

像这样尝试,不要测试

20 = TEXT
20 {
    value = <div class="div1">|</div>
    value {
        override = <div class="div2">|</div>
        override.if {
            # Condition 1
            value = 10
            equals.field = colPos
            # Another "equals" condition nested in isTrue using cObject
            isTrue.cObject = TEXT
            isTrue.cObject {
                value = 1
                if.value = textmedia
                equals.field = CType
            }
        }
    }
}
20=文本
20 {
值=|
价值观{
覆盖=|
覆盖。如果{
#条件1
值=10
equals.field=colPos
#使用cObject嵌套在isTrue中的另一个“equals”条件
isTrue.cObject=文本
伊斯特鲁·科布特{
值=1
if.value=textmedia
equals.field=CType
}
}
}
}
也可以在TypoScript中创建或条件。您可以将isTrue属性转换为包含多个文本对象的COA,如果满足这些对象的条件,这些文本对象将返回类似于1的值

创建OR的示例:

20 = TEXT
20 {
    value = <div class="div1">|</div>
    value {
        override = <div class="div2">|</div>
        override {
            if.isTrue.cObject = COA
            if.isTrue.cObject {
                10 = TEXT
                10 {
                    value = 1
                    if.value = 10
                    if.equals.field = colPos
                }
                20 = TEXT
                20 {
                    value = 1
                    value = textmedia
                    equals.field = CType
                }
            }
        }
    }
}
20=文本
20 {
值=|
价值观{
覆盖=|
凌驾{
if.isTrue.cObject=COA
if.isTrue.cObject{
10=文本
10 {
值=1
如果.value=10
if.equals.field=colPos
}
20=文本
20 {
值=1
value=textmedia
equals.field=CType
}
}
}
}
}
关于这方面的一些有用文档:


如果出现以下情况,您可以使用数据包装将值组合在一起,并在单个数据包中进行比较:

20 = TEXT
20.value = <div class="div1">|</div>
20.value.override = <div class="div2">|</div>
20.value.override.if.value = 10textmedia
20.value.override.if.equals.dataWrap = {field:colPos}{field:CType}

另一个选项是
stdWrap
:除了
…override.if…
之外,还可以使用
…override.stdWrap.if…
(并继续使用
…override.stdWrap.stdWrap.if…
)@BerndWilke.so true。见鬼,是的-stdWrap几乎无处不在:-p@PaulBeck链接是死的,所以案例是:20.0x0x0x1=TEXT 20.0x0x1.value=| 20.1x0x1=TEXT 20.1x0x1.value=|不是吗?对我来说这看起来没问题。这是一个很好的技巧,我称之为在出纳员之上思考:-}
20 = CASE
20.key.dataWrap = {field:myfield1}{field:myfield2}{field:myfield3}
20.default = TEXT
20.default.value = <div class="div1">|</div>
20.001 = TEXT
20.001.value = <div class="div001">|</div>
20.101 = TEXT
20.101.value = <div class="div101">|</div>
20.key.dataWrap = {field:myfield1}x{field:myfield2}x{field:myfield3}