使用 bootstrap_package 将部分(锚点)添加到 typo3 中的流畅菜单
Adding sections (anchors) to a fluid menu in typo3 with bootstrap_package
我想要一个混合页面和当前页面部分的菜单。
例如第 1 页:
- section1_from_page1
- section2_from_page1
- 第 2 页
- 第3页
第 2 页:
- section1_from_page2
- 第 1 页
- 第3页
到现在为止,我所能做的就是使用 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 菜单中的当前页面,并选择替换菜单项的完整呈现。
可以使用 ACT
或 CUR
定义菜单中当前页面的呈现(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
}
}
我想要一个混合页面和当前页面部分的菜单。 例如第 1 页:
- section1_from_page1
- section2_from_page1
- 第 2 页
- 第3页
第 2 页:
- section1_from_page2
- 第 1 页
- 第3页
到现在为止,我所能做的就是使用 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 菜单中的当前页面,并选择替换菜单项的完整呈现。
可以使用 ACT
或 CUR
定义菜单中当前页面的呈现(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
}
}