在TypoScript

时间:2017-09-26 07:51:39

标签: 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 = 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,则内容元素应仅使用div2包装。否则应使用div1。

2 个答案:

答案 0 :(得分:3)

您可以使用dataWrap组合值,并在单个if:

中进行比较
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}

答案 1 :(得分:2)

使用连词的stdWrap属性嵌套Typoscript“if”条件。在你的情况下,文档说,条件与AND连接相关联。因此,您只需要使用另一个条件的stdWrap属性(让我们使用isTrue)并使用stdWrap的cObject属性使其成为TEXT对象。然后你可以在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
            }
        }
    }
}

也可以在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