SilverStripe 3.4+如何在每个1级页面的菜单中显示子页面?

时间:2017-01-24 15:21:58

标签: templates navigation silverstripe

我正在尝试构建一个菜单,其中显示了1级菜单以及同一导航栏上的2级菜单。这是因为Page 1的所有孩子都需要在顶级菜单中。我可以通过在导航中循环菜单(2)轻松完成此操作,但如果您在父页面上,则只显示这些页面。

    <% loop $Menu(2) %>
            <li class="$LinkingMode"><a href="$Link" title="$Title.XML">$MenuTitle.XML</a></li>
        <% end_loop %>
    <% loop $Menu(1) %>
        <li class="$LinkingMode"><a href="$Link" title="$Title.XML">$MenuTitle.XML</a></li>
    <% end_loop %>

1 个答案:

答案 0 :(得分:5)

您可以使用$ Children

循环菜单的子项

如果你只想要所有子页面的整个列表,你可以循环使用menu1而不是渲染它,只返回子项:

<% loop $Menu(1) %>
    <% loop $Children %>
        <li class="$LinkingMode"><a href="$Link" title="$Title.XML">$MenuTitle.XML</a></li>
    <% end_loop %>
<% end_loop %>

如果你想要它们各自的li,你可以在那里添加它们:

<% loop $Menu(1) %>
    <li class="$LinkingMode"><a href="$Link" title="$Title.XML">$MenuTitle.XML</a>
        <% if $Children %>
            <ul>
            <% loop $Children %>
                <li class="$LinkingMode"><a href="$Link" title="$Title.XML">$MenuTitle.XML</a></li>
            <% end_loop %>
            </ul>
        <% end_if %>
    </li>
<% end_loop %>