我在SilverStripe 3.1模板中整理了一个3层导航菜单,并在我的模板中包含以下代码:
<% loop $Menu(1) %>
...
<% loop $Children %>
...
<% loop $Children %>
<li><a href="$Link">$Model</a></li>
<% end_loop %>
<% end_loop %>
<% end_loop %>
但是我没有得到第三层的预期输出。实际上是否有可能成为孩子们的孩子?如果没有,那我该怎么做呢?谢谢!
答案 0 :(得分:3)
是的,可以循环播放儿童之子循环。
您的代码对我来说是正确的。它应该正常工作。
以下是一些可能需要检查的问题。
确保每个级别的所有页面都将ShowInMenus
设置为true。 $Children
和$Menu(1)
仅返回ShowInMenus
设置为true的网页。此复选框可在任何页面的“设置”选项卡中找到。否则,您可以使用$AllChildren
代替$Children
来获取隐藏页面。
确保站点树具有3级深度的页面。很明显要检查。
$Model
不是内置页面变量。这必须是您设置的自定义变量。确保将其设置为Page,填写了值并可在前端访问。
以下是一些测试模板代码,可用于检查站点树的输出。这可以帮助您调试问题:
<ul>
<% loop $Menu(1) %>
<li>
<a href="$Link">$Title - $Model</a>
<% if $Children %>
<ul>
<% loop $Children %>
<li>
<a href="$Link">$Title - $Model</a>
<% if $Children %>
<ul>
<% loop $Children %>
<li>
<a href="$Link">$Title - $Model</a>
</li>
<% end_loop %>
</ul>
<% end_if %>
</li>
<% end_loop %>
</ul>
<% end_if %>
</li>
<% end_loop %>
</ul>