TYPO3 fluid_styled_content - 使用gridelements时的菜单

时间:2016-08-29 20:08:29

标签: typo3 fluid typo3-7.6.x

如何用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>

2 个答案:

答案 0 :(得分:1)

我想你会找回启用了“Show in Section Menus”的内容元素,并且标题已填充且未隐藏。 menu.section viewhelper无法过​​滤内容元素类型。视图助手的type="header"参数不是内容元素类型的过滤器,但会检查是否存在可见header_layoutheader字段不为空。我同意,参数名称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

的一个级别,则生成的菜单可能无法正确排序