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

Menu 如何使用选项拆分控制typo3菜单属性?,menu,typo3,typoscript,Menu,Typo3,Typoscript,我试图解决typo3中的一个设计问题。基本上,我必须实现从目录生成的选项卡式菜单(只有活动状态是选项卡式的),但每个活动(选项卡式)菜单必须具有不同的bg颜色(与选项卡主体框匹配)。我最初选择使用TMENU,但作为实现这一点的一种方法,我在前面介绍了optionsplit功能,但我想不出使用TMENU实现这一点的方法,因此我目前正在尝试使用GMENU,但我没有得到正确的结果。下面是我当前的代码,它给了我空白。我正在尝试复制选项卡图像并将文本集中在图像中,但使用optionsplit复制文件 te

我试图解决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
temp.navmenu1=humenu
特殊=目录
special.value={$idMenu}
entryLevel=1
温度导航菜单1.1=GMENU
温度导航1.1{
否=1
没有{
否.Wrap=
    |
背景色=#d9d9d9 10=文本 10.text.field=标题 10.偏移量=0,5 10.align=居中 10.1文本=1 } 第号法案 表演{ XY=[4.w],[4.h] 4=图像 4.file={$hmtab}|*{$midtab}|*{$endtab} } } #临时项目不会被渲染,所以让我们将其复制到TSOP中 tv.navmenu1主页面
我认为新网站不应该再使用
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>
}
10=HMENU
10 {
特殊=目录
#从pid 3开始
特殊值=3
1=t菜单
1 {
expAll=1
包裹=
    |
否=1 没有{ wrapItemAndSub=
  • |
  • ATagTitle=摘要//说明//标题 } 第号法案 ACT.wrapItemAndSub=
  • |
  • 当前号 CUR.wrapItemAndSub=
  • |
  • } 2 < .1 3 < .1 4 < .1 4.wrap=
      | }
    当然,您现在可以对
    wrapItemAndSub
    使用
    选项split
    如下:
    wrapItemAndSub=
  • *
  • *

  • 剩下的都是普通的CSS。

    我认为新网站不应该再使用
    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>
    }
    
    10=HMENU
    10 {
    特殊=目录
    #从pid 3开始
    特殊值=3
    1=t菜单
    1 {
    expAll=1
    包裹=
      |
    否=1 没有{ wrapItemAndSub=
  • |
  • ATagTitle=摘要//说明//标题 } 第号法案 ACT.wrapItemAndSub=
  • |
  • 当前号 CUR.wrapItemAndSub=
  • |
  • } 2 < .1 3 < .1 4 < .1 4.wrap=
      | }
    当然,您现在可以对
    wrapItemAndSub
    使用
    选项split
    如下:
    wrapItemAndSub=
  • *
  • *

  • 其余的则是普通CSS。

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

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

    以下是一个例子:

    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
    
    1=TMENU
    1 {
    包裹=
      |
    子菜单ObjSuffix=|*| b |*| c 否=1 没有{ wrapItemAndSub=
  • |
  • } } 2 < .1 2.wrap=
      2b<0.1 2b.wrap=
        2c<.1 2c.wrap=
          3 < .2 3b<.2b 3c<.2c 4 < .2 4b<.2b 4c<.2c
          这将使用“firstItem”类包装第一个二级菜单,使用“lastItem”包装最后一个二级菜单,使用“middleItems”类包装所有中间菜单


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

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

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

          以下是一个例子:

          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
          
          1=TMENU
          1 {
          包裹=
            |
          子菜单ObjSuffix=|*| b |*| c 否=1 没有{ wrapItemAndSub=
        • |
        • } } 2 < .1 2.wrap=
            2b<0.1 2b.wrap=
              2c<.1 2c.wrap=
                3 < .2 3b<.2b 3c<.2c 4 < .2 4b<.2b 4c<.2c
                这将使用“firstItem”类包装第一个二级菜单,使用“lastItem”包装最后一个二级菜单,使用“middleItems”类包装所有中间菜单


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

                这些变量来自何处(hmtab、midtab、endtab、idMenu?您的嵌套错误在“NO.Wrap=”,这必须是“Wrap=”(无上限!)。这些变量来自何处(hmtab、midtab、endtab、idMenu?您的嵌套错误在“NO.Wrap=”,这必须是“wrap=”(无上限!)。非常感谢。您的解决方案大大提高了我对网页设计的理解和打字3