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

pin*_*nkp 0 navigation templates 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 %>
Run Code Online (Sandbox Code Playgroud)

小智 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 %>
Run Code Online (Sandbox Code Playgroud)

如果你想要它们各自的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 %>
Run Code Online (Sandbox Code Playgroud)