繁体   English   中英

TYPO3:如果条件为和,则 TypoScript 覆盖

[英]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必须小于 100
  • header必须为“真”(=非空)

作为打字稿:

stdWrap.dataWrap.override.if {
  value = 100
  isLessThan.field = header_layout
  isTrue.field = header
}

暂无
暂无

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

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