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

SilverStripe 3.4+ How to show child pages in the menu from every level 1 page?

我正在尝试构建一个菜单,该菜单在同一导航栏上显示 1 级菜单和 2 级菜单。这是因为第 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 %>

您可以使用 $Children

循环菜单的子项

如果您只想要所有子页面的完整列表,您可以循环 menu1 并且不渲染它,return 只需要子页面:

<% 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 %>