簡體   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