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

Adding sections (anchors) to a fluid menu in typo3 with bootstrap_package

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

第 2 页:

到现在为止,我所能做的就是使用 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
}

然后将此菜单添加到 bootstrap_package 的 Main.html 部分,f:cObject :

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

但是,这意味着我必须在 TypoScript 和 Main.html 部分中维护 "format" (<li><span>...</span><span class="bar"></span></li>)不方便。 例如,如果我更改菜单以便不需要栏 class 跨度,我将不得不更新部分和 TypoScript!

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

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

然后在 Main.html 部分使用:

<f:for each="{mainnavigation}" as="mainnavigationItem">

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

非常感谢任何帮助!

谢谢。

您应该使用这种可能性来识别 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
   }
}