【问题标题】:Building a Menu with anchor links as second menu level使用锚链接构建菜单作为第二级菜单
【发布时间】:2012-12-07 12:41:06
【问题描述】:

我正在制作一个菜单,将第一级显示为普通链接。第二级菜单应从内容元素构建为锚菜单。受this post启发,我构建了以下ts:

lib.footerMenu = HMENU
lib.footerMenu {
1 = TMENU
1 {
    wrap = <ul class="nav">|</ul>
    noBlur = 1

    NO = 1
    NO {
        wrapItemAndSub = <li class="first">|</li> |*| <li>|</li> |*| <li class="last">|</li>
        ATagParams = class="first" |*| |*| class="last"
        after.cObject = CONTENT
        after.cObject {
            table = tt_content
            select {
                pidInList = this
                orderBy = sorting
                where = colPos=1
                languageField = sys_language_uid
            }
            wrap = <ul>|</ul>
            renderObj = TEXT
            renderObj {
                field = header   
                dataWrap = <li><a href="#c{field:uid}">|</a></li>
            }
        }
     }
  }
}

制作类似的内容(“Arnold ipsum.”和“你到底是谁。”作为主页的 CE):

<ul class="nav">
    <li class="first"><a href="/" class="first">Homepage</a>
        <ul>
            <li><a href="#c1">Arnold ipsum.</a></li>
            <li><a href="#c11">Who the hell are you.</a></li>
        </ul>
    </li>
    <li><a href="team/">Team</a>
        <ul>
            <li><a href="#c1">Arnold ipsum.</a></li>
            <li><a href="#c11">Who the hell are you.</a></li>
        </ul>
    </li>
    ...
</ul>

现在的问题是,this (pidInList = this) 总是保存实际的页面 id,因此实际页面的锚菜单会附加到所有主菜单项。

如何在每个主菜单下方显示正确的锚菜单?

【问题讨论】:

    标签: typo3 typoscript


    【解决方案1】:
    lib.footerMenu = HMENU
    lib.footerMenu {
      1 = TMENU
      1 {
        wrap = <ul class="nav">|</ul>
        noBlur = 1
    
        NO = 1
        NO {
          wrapItemAndSub = <li class="first">|</li> |*| <li>|</li> |*| <li class="last">|</li>
          ATagParams = class="first" |*| |*| class="last"
          after.cObject = CONTENT
          after.cObject {
            table = tt_content
            select {
              pidInList.stdWrap.cObject = CASE
              pidInList.stdWrap.cObject {
                key.field = doktype
    
                default = TEXT
                default.field = uid
    
                4 = TEXT
                4.field = shortcut
              }
              orderBy = sorting
              where = colPos=1
              languageField = sys_language_uid
              selectFields = uid,pid,header
            }
            wrap = <ul>|</ul>
            renderObj = TEXT
            renderObj {
              field = header
              typolink {
                parameter.field = pid
                section.field = uid
              }
              wrap = <li>|</li>
            }
          }
        }
      }
    }
    

    不过,它可能不适用于旧的 TYPO3 安装,因为如果我没记错的话,pidInList 以前没有stdWrap。它应该适用于 TYPO3 4.5+。

    【讨论】:

    • 我已经扩展了代码,因为我意识到锚仍然是错误的,因为它们对于当前页面而不是目标页面来说是错误的。
    • 您的解决方案近乎完美。有没有办法让它也可以使用快捷方式?我的“主页”是一个快捷方式,上面没有 CE。这些应该从真正的主页中获取。
    • 还有另一个问题,因为锚点指向的是当前页面,而不是 CE 真正所在的页面。我想我也必须在 'dataWrap =
    • |
    • ' 中添加一些内容!?
  • 本地链接我之前已经改过。不过,我想知道它们是否正确,即它们是 #c1 还是 #1
  • 至于快捷方式页面,我添加了一些对您来说可能已经足够但不是真正通用的解决方案,因为它没有考虑快捷方式模式,也没有解决嵌套快捷方式(页面是另一个快捷页面的快捷方式)。我现在想知道是否有一种简单的方法可以解决快捷方式。
  • 猜你喜欢
    相关资源
    最近更新 更多
    热门标签