为什么下拉菜单有此包装问题?

时间:2018-10-07 03:22:22

标签: drop-down-menu typo3

我的下拉菜单有一个小错误:li组需要用ul包装,但是每个li现在都包装了ul。< / p>

打字稿是:

subparts.BREADCRUMBNAV-INTERACTIVE1 = HMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.special = directory
subparts.BREADCRUMBNAV-INTERACTIVE1.special.value.data = leveluid:1
subparts.BREADCRUMBNAV-INTERACTIVE1.wrap = <div class="breadcrumb-nav1">|</div>
subparts.BREADCRUMBNAV-INTERACTIVE1.1 = TMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.1 {
  expAll = 1
  noBlur = 1   
  NO.wrapItemAndSub = <ul class="dropdown">|</ul>
  NO.allWrap = <li class="dropdown-item1">|</li>
  ACT = 1
  ACT.allWrap = |
  ACT.ATagParams = class="btn btn-secondary clickme1" style="order:-1;"
} 

输出为:

<div class="breadcrumb-nav1">

  <a href="frances.html" class="btn btn-secondary clickme1" style="order:-1;">Francés</a>

  <ul class="dropdown">
    <li class="dropdown-item1"><a href="ingles.html">Inglés</a></li>
  </ul>

  <ul class="dropdown">
    <li class="dropdown-item1"><a href="aleman.html">Alemán</a></li>
  </ul>

  <ul class="dropdown">
    <li class="dropdown-item1"><a href="italiano.html">Italiano</a></li>
  </ul>

</div>

但输出应为:

<div class="breadcrumb-nav1">

  <a href="frances.html" class="btn btn-secondary clickme1" style="order:-1;">Francés</a>

  <ul class="dropdown">
    <li class="dropdown-item1"><a href="ingles.html">Inglés</a></li>
    <li class="dropdown-item1"><a href="aleman.html">Alemán</a></li>
    <li class="dropdown-item1"><a href="italiano.html">Italiano</a></li>
  </ul>

</div>

2 个答案:

答案 0 :(得分:0)

这是一种解决方法或更简单的答案,尽管如此,在某些情况下它可能还是有用的。要获得100%解决问题的解决方案,请查看此页面上的第二个答案。
关于包装您的挑战相当困难,但是主要的解决方案不是在TypoScript级别解决问题,而是在CSS级别解决了问题。
因此,您不需要所需的结构,而是可以依靠CSS property order来获得当前显示在顶部的语言。
详细来说,这意味着您的菜单结构如下所示:

<div class="breadcrumb-nav1">
    <ul class="dropdown">
        <li class="dropdown-item1"><a href="ingles.html">Inglés</a></li>
        <li class="btn btn-secondary clickme1" style="order:-1;"><a href="frances.html" >Francés</a></li>
        <li class="dropdown-item1"><a href="aleman.html">Alemán</a></li>
        <li class="dropdown-item1"><a href="italiano.html">Italiano</a></li>
    </ul>
</div>

其余的工作很简单,您无需对TypoScript进行过多思考:

subparts.BREADCRUMBNAV-INTERACTIVE1 = HMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.special = directory
subparts.BREADCRUMBNAV-INTERACTIVE1.special.value.data = leveluid:1
subparts.BREADCRUMBNAV-INTERACTIVE1.wrap = <div class="breadcrumb-nav1">|</div>
subparts.BREADCRUMBNAV-INTERACTIVE1.1 = TMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.1 {
  expAll = 1
  noBlur = 1   
  wrap = <ul class="dropdown">|</ul>
  NO.linkWrap = <li class="dropdown-item1">|</li>
  ACT = 1
  ACT.linkWrap = <li class="btn btn-secondary clickme1" style="order:-1;">|</li>
} 

您现在仍然可以像这样简化它,结果应该与上面相同:

subparts.BREADCRUMBNAV-INTERACTIVE1 = HMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.special = directory
subparts.BREADCRUMBNAV-INTERACTIVE1.special.value.data = leveluid:1
subparts.BREADCRUMBNAV-INTERACTIVE1.wrap = <div class="breadcrumb-nav1"><ul class="dropdown">|</ul></div>
subparts.BREADCRUMBNAV-INTERACTIVE1.1 = TMENU
subparts.BREADCRUMBNAV-INTERACTIVE1.1 {
  expAll = 1
  noBlur = 1   
  NO.linkWrap = <li class="dropdown-item1">|</li>
  ACT = 1
  ACT.linkWrap = <li class="btn btn-secondary clickme1" style="order:-1;">|</li>
} 

对于所有包装,您可以将其用于每个链接here is still the reference,尽管您可能永远不需要它。

我要说的另一件事是,您似乎使用目录来分隔语言。如果使用此方法在每个页面上使用翻译,则可以使用TYPO3 which is described here的公共语言菜单,通常,您可能仅用directory替换了关键字language

答案 1 :(得分:0)

要完全实现所需的结构,TypoScript必须与我的第一个答案不同,并且更为复杂。
当前,无法使用函数typolink创建链接并检查其active状态。因此,在下面,我将整个菜单创建为COA,并为单独的活动链接创建一个HMENU,并为未活动项目列表创建一个HMENU。

subparts.BREADCRUMBNAV-INTERACTIVE1 = COA
subparts.BREADCRUMBNAV-INTERACTIVE1 {
    wrap = <div class="breadcrumb-nav1">|</div>
    10 = HMENU
    10 {
        special = directory
        special.value.data = leveluid:1
        1 = TMENU
        1 {
            expAll = 1
            noBlur = 1 
            NO = 1
            NO.doNotShowLink = 1
            ACT = 1
            ACT.ATagParams = class="btn btn-secondary clickme1" style="order:-1;"
        }
    }
    20 = HMENU
    20 {
        special = directory
        special.value.data = leveluid:1
        wrap = <ul class="dropdown">|</ul>
        1 = TMENU
        1 {
            expAll = 1
            noBlur = 1 
            NO.linkWrap = <li class="dropdown-item1">|</li>
            ACT = 1
            ACT.doNotShowLink = 1
        }
    }
}

编辑后
...现在已经过测试,不过还是让我知道某些东西是否无法正常工作。