如何拆分和包装TYPO3中的HMENU项目?

时间:2013-10-24 19:15:05

标签: typo3

我正在尝试使用TypoScript创建一个自定义菜单,我有8个Menü项目,我想删除前两个项目的 css 类“dropdown_1column和dropdown_1column”,我不知道知识?

我已经体验过Typoscript onSplit功能可能, 这段代码有什么不对?

 wrap = <ul class="levels">|</ul>|| <ul class="levels">|</ul>|*|<div class="dropdown_1column"><div class="col_1 firstcolumn"><ul class="levels">|</ul></div></div>||<ul class="levels">|</ul>

前两项应包括在内:

 <ul class="levels">|</ul>

其余项目应包含在:

 <div class="dropdown_1column"><div class="col_1 firstcolumn"><ul class="levels">|</ul></div></div>

这是我的html输出:

<li>
   <a class="drop" href="blblbl/">item</a>
      <div class="dropdown_1column">
          <div class="col_1 firstcolumn">
            <ul class="levels">
               <li>
               <li>
               <li>
            </ul>
      </div>
 </li>

一定是这样

<li>
   <a class="drop" href="blblbl/">item</a>
      <div>
          <div>
            <ul class="levels">
               <li>
               <li>
               <li>
            </ul>
      </div>
 </li>

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

您可以选择使用optionSplit根据位置格式化项目,也可以将菜单拆分为两部分,并使用begin和maxItems来定义要使用的项目范围。

后者不太复杂但应该很好地为你服务:

10 = COA
10 {
  10 = HMENU
  10 {
    # your menu definition here
    maxItems = 2
    wrap = <ul class="levels">|</ul>
  }
  20 = HMENU
  20 {
    # your menu definition here
    begin = 3
    wrap = <div class="dropdown_1column"><div class="col_1 firstcolumn"><ul class="levels">|</ul></div></div>
  }
}

答案 1 :(得分:0)

您的选项拆分语法错误。它必须是first |*| middle |*| last。元素从最后开始提交。您可以通过双管(||)进一步拆分每个属性。

first || second |*| middle |*| second last || last

因此它应该是

wrap = <ul class="levels">|</ul>|| <ul class="levels">|</ul>|*| <div class="dropdown_1column"><div class="col_1 firstcolumn"><ul class="levels">|</ul></div></div> |*|  <div class="dropdown_1column"><div class="col_1 firstcolumn"><ul class="levels">|</ul></div></div>

格式为

first || second |*| middle |*| last

而中间和最后一部分共享相同的代码

答案 2 :(得分:0)

我会说没有人在这里读过TSref:)

您需要什么:

根据optionSplit 1的第4条规则:

  

“如果最后一部分不存在,则重复中间值”

所以最优雅和最短的optionSplit语法将是:

first || second |*| the_rest

在Typoscript代码中,它将类似于:

<ul class="levels">|</ul> || <ul class="levels">|</ul> |*| <div class="dropdown_1column"><div class="col_1 firstcolumn"><ul class="levels">|</ul></div></div>

你得到了什么:

您编写的optionSplit的语法如下:

F || S |*| M1 || M2

产生如下菜单:

F S M1 M2 M1 M2 M1 M2....

因为中间部分(最后一个,或者如果不存在)在第一部分之后连续重复。

有关optionSplit的更多信息。