Silverstripe 所有子项的递归菜单
我正在尝试生成站点树中所有页面的嵌套菜单 这个节目有两个关卡,我不知道有多少关卡 目前,我知道在一个点上至少有四个深度,所以我有:Silverstripe 所有子项的递归菜单,silverstripe,silverstripe-4,Silverstripe,Silverstripe 4,我正在尝试生成站点树中所有页面的嵌套菜单 这个节目有两个关卡,我不知道有多少关卡 目前,我知道在一个点上至少有四个深度,所以我有:
-
-
-
-
它可以工作,但不可靠(如果编辑器添加了另一个级别)。这是相当令人讨厌的。有递归选项吗?我们可以创建一个递归菜单项模板,以创建与站点树一样深的菜单 首先,我们在主题的
Includes
目录中创建一个MenuItem.ss
模板文件。在此模板中,我们显示菜单项链接并检查是否有任何子页面。我们循环浏览所有子页面,并为每个子页面包含MenuItem.ss
模板:
包括/MenuItem.ss
<li class="$LinkingMode">
<a href="$Link" aria-label="Go to the $Title.XML page">$MenuTitle</a>
<% if $Children %>
<ul>
<% loop $Children %>
<% include Includes/MenuItem %>
<% end_loop %>
</ul>
<% end_if %>
</li>
模板中的主菜单代码如下所示:
<nav class="main-menu">
<ul>
<% loop $Menu(1) %>
<% include Includes/MenuItem %>
<% end_loop %>
</ul>
</nav>