[英]TYPO3: TypoScript override if condition with and
我有一个 TypoScript 布局,需要一个带有第二个内部的 if 语句
stdWrap.dataWrap = <div class="grid col1 lay{field:layout}">|</div>
如果 header_layout 未设置为 100,则现在设置覆盖:
stdWrap.dataWrap.override = <div class="header"><h4>{field:header}</h4><h5>{field:subheader}</h5></div><span class="hitter"></span><div class="grid col1 lay{field:layout}">|</div>
stdWrap.dataWrap.override.if{
value = 100
equals.field = header_layout
negate = 1
那行得通,但是如果没有设置 header,则用户不会将 header_layout 设置为隐藏,所以我想检查字段 header 是否不为空,但这不起作用:
stdWrap.dataWrap.override.if{
value = 100
equals.field = header_layout
negate = 1
isTrue.cObject = TEXT
isTrue.cObject{
value = 1
if.value =
equals.field = header
negate = 1
If the header is set and header_layout is 100, the simple output is rendered but if the header is empty and header_layout is not 100 the override will be rendered and add empty html tags.
我认为第二个条件将被视为“或”而不是“和”,这个 TypoScript 应该是什么样子?
如果您使用多个条件,则必须注意诸如.negate
类的全局修饰符。 它们不能分配给单个条件,而是所有单个条件的整体and
ed 结果。
据我了解您的逻辑,我认为您错过了对级联.if
的否定。 如果您使用适当的条件( .isTrue
或因为否定.isFalse
),您也可以避免与空比较
否则,您可能需要构建一个复杂的条件。
有很多选择:
.ifempty
、 ``.override ,
.if` 的多种组合COA
用于您的值或条件,其中每个简单条件都分配给一个数组 object:temp.test = COA
temp.test {
10 = TEXT
10 {
value = cond1
if {
value = 1
equals.field = abc
}
}
20 = TEXT
20 {
value = cond2
if {
value = 2
equals.field = def
}
}
}
那么您可以按原样使用它或使用它来构建正确的条件:
和:
10 = TEXT
10.value = my value
10.ovreride = my override
10.override.if {
value =cond1cond2
equals.cObject < temp.test
}
或者:
10 = TEXT
10.value = my value
10.ovreride = my override
10.override.if.isTrue.cObject < temp.test
根据TSref中的说明,条件用AND
连接。
所以这些非常简单的条件应该匹配:
header_layout
必须小于 100header
必须为“真”(=非空)作为打字稿:
stdWrap.dataWrap.override.if {
value = 100
isLessThan.field = header_layout
isTrue.field = header
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.