如何使用选项拆分来控制typo3菜单属性?

时间:2012-05-01 17:51:58

标签: menu typo3 typoscript

我正在尝试解决typo3中的设计问题实现。基本上我必须实现从目录生成的选项卡式菜单(只有活动状态是选项卡式),但每个活动(选项卡式)菜单必须具有不同的bg颜色(与选项卡主体框匹配)。我最初选择使用TMENU,但是之前被引入了optionsplit功能作为实现这一目标的一种方法,但是我想不出用TMENU实现这一目标的方法所以我目前正在尝试使用GMENU,但是我没有做到正确结果。下面是我当前的代码,它给了我空白空格。我正在尝试复制选项卡图像并集中文本在图像中,但使用optionsplit复制文件。

temp.navmenu1 = HMENU
special = directory
special.value = {$idMenu}
entryLevel = 1
temp.navmenu1.1 = GMENU

temp.navmenu1.1 {
  NO = 1
  NO{
  NO.Wrap = <ul style="display: inline; "> | </ul>
  backColor = #d9d9d9
    10 = TEXT
    10.text.field = title
    10.offset = 0,5
    10.align = center
    10.niceText = 1
  }
  ACT < .NO
  ACT{
      XY = [4.w],[4.h]

      4 = IMAGE
      4.file = {$hmtab}|*|{$midtab}|*|{$endtab}
    }

}

# Temp items aren't rendered, so let's copy it into a TSOP
tv.navmenu1 < temp.navmenu1

page = PAGE
page.typeNum = 0
page.10 = USER
page.10.userFunc = tx_templavoila_pi1->main_page

2 个答案:

答案 0 :(得分:9)

我不认为新网站应该再使用GMENU。相反,你应该使用TMENU和CSS。

以下是一个可以帮助您入门的基本示例:

10 = HMENU
10 {
  special = directory
    # start with pid 3
  special.value = 3
  1 = TMENU
  1 {
    expAll = 1
    wrap = <ul>|</ul>
    NO = 1
    NO {
      wrapItemAndSub = <li>|</li>
      ATagTitle = abstract // description // title
    }
    ACT < .NO
    ACT.wrapItemAndSub = <li class="active">|</li>
    CUR < .NO
    CUR.wrapItemAndSub = <li class="current">|</li>
  }
  2 < .1
  3 < .1
  4 < .1
  4.wrap = <ul class="level-4">|</li>
}

当然,您现在可以option split使用wrapItemAndSub,如下所示:wrapItemAndSub = <li class="first">|</li> |*| <li class="normal">|</li> |*| <li class="last">|</li>

其余的只是普通的CSS。

答案 1 :(得分:1)

如果您的问题是您希望在不同类属性的同一级别上包装不同的子菜单,那么请查看TMENU对象的submenuObjSuffixes属性。

虽然不可能将optionsplit与wrap一起使用(仅仅因为wrap只执行一次),但很有可能使用submenuObjSuffixes获得所需的结果。

以下是一个例子:

1 = TMENU
1 {
    wrap = <ul>|</ul>
    submenuObjSuffixes =  |*| b |*| c

    NO = 1
    NO {
        wrapItemAndSub = <li>|</li>
    }
}

2 < .1
2.wrap = <ul class="firstItem">|</ul>
2b < .1
2b.wrap = <ul class="middleItems">|</ul>
2c < .1
2c.wrap = <ul class="lastItem">|</ul>

3 < .2
3b < .2b
3c < .2c
4 < .2
4b < .2b
4c < .2c

这将包含带有“firstItem”类的第一个第二级菜单,带有“lastItem”的最后一个第二级菜单以及带有“middleItems”类的所有中间菜单。

请注意,后缀会附加到所有后续菜单级别。因此,如果你在1级使用submenuObjSuffixes,它不仅会影响2级,还会影响3,4级......你必须在这些级别上定义相应的选项,否则它们将不会被渲染。