如何用tt_content标题元素构建一个TYPO3特殊菜单,而不是"页面" ?
https://docs.typo3.org/typo3cms/extensions/fluid_styled_content/7.6/ContentElements/Menu/Index.html
Type-3是一个很好的例子,但我只能在BE页面中选择,而不能在tt_content - Elements中选择。
<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" xmlns:ce="http://typo3.org/ns/TYPO3/CMS/FluidStyledContent/ViewHelpers" data-namespace-typo3-fluid="true">
<ce:menu.list pageUids="{pageUids}" as="pages">
<f:if condition="{pages}">
<ul class="ce-menu ce-menu-3">
<f:for each="{pages}" as="page">
<ce:menu.section pageUid="{page.uid}" as="contentElements" type="header">
<f:if condition="{contentElements}">
<f:for each="{contentElements}" as="contentElement">
<li>
<f:link.page pageUid="{page.uid}" section="c{contentElement.uid}">
{contentElement.header}
</f:link.page>
</li>
</f:for>
</f:if>
</ce:menu.section>
</f:for>
</ul>
</f:if>
</ce:menu.list>
</html>
答案 0 :(得分:1)
我想你会找回启用了“Show in Section Menus”的内容元素,并且标题已填充且未隐藏。 menu.section viewhelper无法过滤内容元素类型。视图助手的type="header"
参数不是内容元素类型的过滤器,但会检查是否存在可见header_layout
且header
字段不为空。我同意,参数名称type
具有误导性。
如果要过滤内容类型(CType),请添加额外的“if”语句,在内容元素的迭代过程中对{contentElement.CType} == header
进行过滤
<f:for each="{contentElements}" as="contentElement">
<f:if condition="{contentElement.CType} == 'header'">
<li>
<f:link.page pageUid="{page.uid}" section="c{contentElement.uid}">
{contentElement.header}
</f:link.page>
</li>
</f:if>
</f:for>
如果您有足够的知识,最好为此编写自己的视图助手。
答案 1 :(得分:0)
首先,您应该重命名问题,以便明确要创建适用于grid_elements
的内容菜单
我遇到了同样的问题,但由于您必须修改内容的搜索查询,因此无法找到另一种方法,只能为此创建一个小扩展。您可以在此处找到它:https://typo3.org/extensions/repository/view/gridelements_content_menu
目前没有手册,只需安装扩展程序并在模板中包含静态TS即可。如果您的内容元素嵌套深度超过grid_elements
的一个级别,则生成的菜单可能无法正确排序