【问题标题】:Display TMENU.2 even if it has no submenu points (but content)显示 TMENU.2 即使它没有子菜单点(但有内容)
【发布时间】:2012-01-19 14:07:33
【问题描述】:

这听起来可能很奇怪,但我有一个菜单,其中第一页没有真正的子页面。但是,它有一个带有 2 个自定义 TMENU 和一个插件插入的附加 COA。

但是:此页面的子导航仅在我向此页面添加可见子页面时生成(这将是一种变通方法)。有没有更好的解决方案让这个菜单可见?

这里是打字稿:

field_main_navigation = HMENU
field_main_navigation {

    1 = TMENU
    1 {
        expAll = 1

        NO. wrapItemAndSub = <div class="wrap-itemAndSub">|</div>

        ACT < .NO
        ACT = 1
        ACT.ATagParams = class="active"
    }

    2 = TMENU
    2 {
        wrap = <div class="sub clearfix" style="display: none;">|</div>

        # Custom build for page 2
        stdWrap.wrap.append = COA
        stdWrap.wrap.append {
            if.value.field = pid
            if.equals = 2

            # a lot of typoscript, basically:
            # two COA's, one with two HMENU, the 
            # other one with plugin content
            10 = COA
            # ...

            20 = COA
            # ...
        }


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

解释我想要实现的目标
基本上它是一个简单的“悬停时显示子菜单”。只是第一项 在其悬停子菜单中有特殊内容。因为没有实际 [ nav 1 ] 包含的子页面,不呈现子菜单。

[ nav 1 ] [ nav 2 ] [ nav 3 ]
|------div.sub style="display: none;" *-------|
|  ( Custom TMENU )  |    (Plugin Content)    |
|                    |                        |
|--------------------|------------------------|
|  ( Custom TMENU )  |    ( Usual submenu ** )|
|                    |                        |
|---------------------------------------------|

* Pops out when hovering over [ nav 1 ]

** this _may_ be the case in the future, but 
   currently not. here's the problem

这让我想到了另一个问题(刚刚):我应该在我通常的 HMENU/TMENU 中执行所有这些操作,还是应该渲染一个普通的 HMENU/TMENU 并将 nav-1 作为打字稿生成的自定义导航点添加自定义子导航层?

【问题讨论】:

  • 因为你的自定义内容应该放在子菜单的后面,也就是我把XXX放在这个的地方吧? NO.wrapItemAndSub = &lt;div class="wrap-itemAndSub"&gt;|XXX&lt;/div&gt;
  • 更新的问题(底部有另一个问题..)
  • 如果第一级中的项目没有改变(即 UID 2 的页面始终存在),那么您可以简单地将其与您的自定义 TypoScript 一起放在菜单之前并排除该页面HMENU。我的回答考虑到该页面可能不存在。它对你有用吗?
  • 工作或多或少,问题出在子菜单中。但我接受它,因为它是一个可靠的解决方案。谢谢!
  • 子菜单有什么问题?

标签: typo3 typoscript


【解决方案1】:

将您的自定义内容放在第一级菜单设置中。试试这个:

field_main_navigation = HMENU
field_main_navigation {
  1 = TMENU
  1 {
    expAll = 1

    NO.wrapItemAndSub {
      append = COA
      append {
        if {
          value.field = uid
          equals = 2
        }

        # a lot of typoscript, basically:
        # two COA's, one with two HMENU, the 
        # other one with plugin content
        10 = COA
        # ...

        20 = COA
        # ...
      }

      wrap3 = <div class="wrap-itemAndSub">|</div>
    }

    ACT < .NO
    ACT = 1
    ACT.ATagParams = class="active"
  }

  2 = TMENU
  2 {
    wrap = <div class="sub clearfix" style="display: none;">|</div>

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

注意:我对第二个 TMENU 的换行有点困惑。第一级项目中是否有任何真正的子页面?

【讨论】:

  • 请注意:是的,他们会在未来。因此,将鼠标悬停在第一级项目上时应该弹出的第二级菜单总是相同的。只有第一个条目(uid 2)有一些额外的内容。
  • 对其进行了一些更改以保持 html/css 的有效顺序。而不是wrapItemAndSub { append 我做了after.cObject { 所以我可以保持平常的wrapItemAndSub = &lt;...
猜你喜欢
  • 1970-01-01
  • 2021-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-01
  • 2017-06-14
  • 1970-01-01
相关资源
最近更新 更多