繁体   English   中英

在TypoScript中设置多个if条件

[英]Make multiple if conditions in TypoScript

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

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

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 = 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

因此,如果CType为textmedia并且colPos为10,则content元素仅应用div2包装。否则,应使用div1。

您可以使用dataWrap组合值,并在单个条件下比较它们:

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}

如果要根据组合使用更多具有不同结果的值,则使用CASE对象可能是更好的方法:

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>

要在值可以包含多个0或1时分隔它们,您应该在dataWrap中添加一个分隔符,例如x。

20.key.dataWrap = {field:myfield1}x{field:myfield2}x{field:myfield3}

使用连词的stdWrap-properties可以嵌套拼写“ if”-条件。 在您的情况下,文档说的是,条件通过AND连词连接。 因此,您只需要使用其他条件的stdWrap属性(使用isTrue),并使用stdWrap的cObject属性使其成为TEXT对象即可。 然后,您可以在cObject内放置另一个“等于”条件,如果满足该条件,则该条件将向isTrue返回“ 1”。

像这样尝试,未经测试

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
            }
        }
    }
}

也可以在Typocript中创建OR条件。 您可以将isTrue属性转换为包含多个TEXT对象的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
                }
            }
        }
    }
}

有关此的一些有用的文档:

https://docs.typo3.org/typo3cms/TyposcriptReference/Functions/If.html

https://docs.typo3.org/typo3cms/TyposcriptReference/Functions/Stdwrap.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM