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}