使用bootstrap_package将部分(锚点)添加到typo3中的流体菜单

时间:2018-02-12 16:54:05

标签: typo3 typoscript fluid

我想有一个菜单混合当前页面的页面和部分。 例如,在第1页:

  • section1_from_page1
  • section2_from_page1
  • 第2页
  • PAGE3

在第2页:

  • section1_from_page2
  • 第1页
  • PAGE3

到目前为止,我所能做的就是使用TypoScript构建一个新的部分菜单:

lib.sectionnavigation = HMENU
lib.sectionnavigation {
    1 = TMENU
    1 {
        sectionIndex = 1
        sectionIndex.type = header
        sectionIndex.useColPos = -1
        NO {
            ATagBeforeWrap = 1
            linkWrap = <span> | </span> <span class="bar"></span>
            allWrap = <li> | </li>
            allWrap.insertData = 1
        }
    }
    special = list
    special.value.data = page:uid
}

然后使用f:cObject在bootstrap_package的Main.html部分中添加此菜单:

<f:cObject typoscriptObjectPath="lib.sectionnavigation" />

然而,这意味着我必须保持&#34;格式&#34; TypoScript和 Main.html 部分中的(<li><span>...</span><span class="bar"></span></li>),这是不方便的。 例如,如果我更改菜单以便我不需要栏类跨度,我将不得不更新部分和TypoScript!

根据我的理解,bootstrap_package定义了setup.txt中的主菜单:

10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
10 {
    levels = 2
    includeSpacer = 1
    as = mainnavigation
}

然后在 Main.html partial:

中使用它
<f:for each="{mainnavigation}" as="mainnavigationItem">

我的第一个计划是尝试使用TypoScript构建一个新阵列(类似于{mainnavigation}中的阵列),但我找不到方法! 我也试过使用MenuProcessor,但也没有成功。

任何帮助都会非常感激!

谢谢。

1 个答案:

答案 0 :(得分:0)

您应该可以使用选项来识别typoscript菜单中的当前页面,以替换菜单项的完整呈现。

菜单中当前页面的呈现可以使用ACTCUR定义(ACT标识根行中的所有页面:当前页面,父级,祖父级,... )。在你的情况下,它可能没有区别,但你可以安全地玩:

lib.MainMenu = HMENU
lib.MainMenu {
   wrap = <ul class="nav">|</ul>
   1 = TMENU
   1 {
      NO {
          wrapItemAndSub = <li><span> | </span> <span class="bar"></span></li>
      }
      CUR = 1 
      CUR.doNotShowLink = 1
      // insert your section menu here:  
      CUR.before.cObject < lib.sectionnavigation
   }
}