HMENU:如何将页面内容包装到菜单中?

时间:2019-04-15 21:15:23

标签: typo3 typoscript

我想基于文件夹中定义的页面内容构建一个完整的下拉菜单。

想法是:

MENU(文件夹) -菜单1(页面) -菜单2(页面)

我的目标是获得以下输出:

  • 菜单1页面中的菜单1内容
  • 菜单2页面中的菜单2内容

页面中只有一个内容块。

用菜单1/2来获取li没问题,但是我无法找到获取和包装页面内容的方法。

我的代码看起来像

menu.nav = HMENU
menu.nav {
  special = directory
  special.value = 214
  entryLevel = 1
  1 = TMENU
  1.wrap = <ul>|</ul>
  1.expAll = 1
  1.NO = 1
  1.NO.wrapItemAndSub.cObject = TEXT
  1.NO.wrapItemAndSub.cObject.value = <li>|</ul></li>
  1.NO.after.cObject = COA
  1.NO.after.cObject {
    10 = TEXT
    10.value = <div class="dropdown">

    20 = CONTENT
    20 {
      table = tt_content
      select {

.... 

但是我无法弄清楚这里需要什么来获取页面的内容。

有人可以帮助我解决这个问题吗?

先谢谢了。 问候 乔尔

3 个答案:

答案 0 :(得分:0)

我将在这里尝试一种解决方案,希望我不会简化您的代码,至少您可以将其作为起点:

menu.nav = HMENU
menu.nav {
    special = directory
    special.value = 214    
    1 = TMENU
    1.wrap = <ul>|</ul>
    1.NO {

        wrapItemAndSub = <li>|</li>
        after.cObject = CONTENT
        after.cObject {
            table = tt_content
            select {
                pidInList.field = uid
                where =   {#colPos} = 0   
            }
            renderObj = < tt_content
            wrap = <div class="dropdown">|</div>  
        }
    }
} 

我以this one为起点。

答案 1 :(得分:0)

我前段时间遇到类似的问题,想出了这段代码来制作一个包含数据库信息的菜单。

这不是一个答案,但它是一段类似的代码。希望它能给您一个想法。

它生成一个链接列表,这些链接指向具有“ no_search” = 0或其他条件的页面。还进行了数据库联接以获取站点中页面的页面路径或URL。

认为您可以对页面内容执行相同的操作,将其输出为html。

lib.sitemap = CONTENT
lib.sitemap {
  table = pages
  select {
    orderBy = pages.sorting
    selectFields = pages.uid, pages.title, tx_realurl_pathcache.pagepath
    join = tx_realurl_pathcache ON tx_realurl_pathcache.page_id=pages.uid
    pidInList = 44
    recursive = 7
    where = (no_search="0") or (nav_hide=1 and no_search=0)
    groupBy = tx_realurl_pathcache.page_id
  }
  renderObj = COA
  renderObj.wrap = <li>|</li>
  renderObj.10 = TEXT
  renderObj.10 {
    field = pagepath
    wrap = <a href="|">
  }
  renderObj.20 = TEXT
  renderObj.20.field = title
  renderObj.30 = TEXT
  renderObj.30.value = </a>
}
lib.sitemap.wrap = <ul> | </ul>

答案 2 :(得分:0)

您必须这样做

lib.navbar2 = COA
lib.navbar2.wrap = <nav>|</nav>
lib.navbar2 {
20 = HMENU
20.wrap = <ul>|</ul>
20 {
    #entryLevel = 0
    #excludeUidList = 11,12
    1 = TMENU
    1 {
        wrap = |
        expAll = 1

        NO = 1
        NO.allWrap >
        NO.wrapItemAndSub = <li>|</li>
        NO.after.cObject = COA
        NO.after.cObject{
            stdWrap.wrap = <div class="megamenu-wrapper">|</div>
            20 = CONTENT
            20 {
                table = tt_content
                select {
                    pidInList.field = uid
                    orderBy = sorting
                    where = colPos=4 
                    languageField=sys_language_uid
                }
            }
            20.wrap = |
        }

        ACT = 1
        ACT < .NO
        ACT.wrapItemAndSub = <li class="active">|</li>

        CUR = 1
        CUR < .NO
        CUR.wrapItemAndSub = <li class="active">|</li>
    }
}
}