【问题标题】:How to use option split to control typo3 menu properties?如何使用选项拆分来控制typo3菜单属性?
【发布时间】:2012-05-01 17:51:57
【问题描述】:

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

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

【问题讨论】:

  • 这些变量是从哪里来的(hmtab,midtab,endtab,idMenu?你的嵌套在“NO.Wrap =”是错误的,这一定是“wrap =”(没有上限!)。

标签: menu typo3 typoscript


【解决方案1】:

我认为新站点不应再使用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 = &lt;li class="first"&gt;|&lt;/li&gt; |*| &lt;li class="normal"&gt;|&lt;/li&gt; |*| &lt;li class="last"&gt;|&lt;/li&gt;

剩下的就是普通的 CSS。

【讨论】:

  • 非常感谢。您的解决方案大大提高了我对网页设计的理解和打字错误
  • 为弃用 GMENU 点赞
  • 为了正确的标题渲染,您需要添加字段 (ATagTitle.field = abstract // description // title)
【解决方案2】:

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

虽然无法将选项拆分与 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”类包装第一个 2 级菜单,用“lastItem”包装最后一个 2 级菜单,以及用“middleItems”类包装所有中间菜单。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 2011-12-30
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多