【问题标题】:SilverStripe 3.4+ How to show child pages in the menu from every level 1 page?SilverStripe 3.4+ 如何在每个 1 级页面的菜单中显示子页面?
【发布时间】:2017-01-24 15:21:58
【问题描述】:
我正在尝试构建一个菜单,在同一导航栏上显示 1 级菜单和 2 级菜单。这是因为第 1 页的所有子项都需要在顶级菜单中。我可以通过在导航中循环 menu(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 %>
【问题讨论】:
标签:
templates
navigation
silverstripe
【解决方案1】:
您可以使用 $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 %>