HMENU中的TYPO3 CASE基于pid

时间:2017-05-24 12:06:13

标签: typo3 typoscript typo3-7.6.x

我试图让我的HMENU的第二级不同,具体取决于父ID是什么。

具体来说,当pid是特定数字时,我需要向TMENU添加COA。

我认为我应该可以使用CASE以某种方式做到这一点,但我没有找到正确的设置来使其正常工作。

这是我的错误代码,显示了我想要做的事情:

lib.mymenu = HMENU
lib.mymenu { 
  1 = TMENU
  1 {
    ...
  }
  2 = CASE
  2 {
    key.field = pid
    default = TMENU
    default {
      stdWrap.wrap = <ul>|</ul>
      expAll = 1
      NO = 1
      NO.wrapItemAndSub = <li>|</li>
    }
    23 = TMENU
    23 {
      stdWrap.wrap = <ul>|</ul>
      expAll = 1
      NO = 1
      NO.stdWrap.cObject = COA
      NO.stdWrap.cObject {
        ...
      }
    }
  }
}

1 个答案:

答案 0 :(得分:2)

我怀疑你那个级别的pid是否可用 由于主要部分是相同的,我只能在stdWrap中使用简单的if-wrap:

2 = TMENU
2 {
  stdWrap.wrap = <ul>|</ul>
  expAll = 1
  NO = 1
  NO {
      wrapItemAndSub = <li>|</li>
      /// what wrap do you want to use???
      stdWrap.wrap {
          cObject = COA
          cObject {
              :
          }
          if.equals.field = pid
          if.value = 23
      }
} 

在您的代码中,您还使用cObject stdWrap上的stdWrap不匹配,因为List<List<String>> l = new ArrayList<>(); l.add(Arrays.asList("4", "5", "3", "2")); l.add(Arrays.asList("7", "1", "0", "9")); l.add(Arrays.asList("8", "4", "3", "1")); for (int i = 0; i < l.size(); i++) { System.out.println(i + " : " + l.get(i)); } 不是活动包装,而是一组(包装)函数的容器。