1

我正在制作一个菜单,将第一级显示为普通链接。第二级菜单应从内容元素构建为锚菜单。受这篇文章的启发,我构建了以下 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,因此实际页面的锚菜单被附加到所有主菜单项。

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

4

1 回答 1

3
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+。

于 2012-12-07T13:00:32.107 回答