我正在 SilverStripe 3.1 模板中组合一个 3 层导航菜单,并在我的模板中具有以下代码:
<% loop $Menu(1) %>
...
<% loop $Children %>
...
<% loop $Children %>
<li><a href="$Link">$Model</a></li>
<% end_loop %>
<% end_loop %>
<% end_loop %>
但是,我没有从第三层获得我期望的输出。真的有可能得到孩子的孩子吗?如果没有,那我该怎么办?谢谢!
是的,可以循环遍历"孩子的子"循环。
你的代码对我来说是正确的。它应该正常工作。
以下是一些可能需要检查的问题。
确保每个级别的所有页面都ShowInMenus
设置为 true。 $Children
和 $Menu(1)
仅返回ShowInMenus
设置为 true 的页面。此复选框可以在任何页面的"设置"选项卡中找到。否则,您也可以使用$AllChildren
而不是$Children
来获取隐藏页面。
确保站点树的页面深度为 3 层。要检查的明显事情。
$Model
不是内置页面变量。这必须是您设置的自定义变量。确保将其设置为页面,已填充值,并且可以在前端访问。
下面是一些可用于检查站点树输出的测试模板代码。这可能有助于调试问题:
<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>