是否可以在 SilverStripe 菜单中获得 Children of children?
Is it possible to get Children of children in a SilverStripe menu?
我正在 SilverStripe 3.1 模板中组合一个 3 层导航菜单,并在我的模板中包含以下代码:
<% loop $Menu(1) %>
...
<% loop $Children %>
...
<% loop $Children %>
<li><a href="$Link">$Model</a></li>
<% end_loop %>
<% end_loop %>
<% end_loop %>
但是我没有从第三层获得我期望的输出。 Children 的 Children 真的有可能吗?如果没有,那我应该怎么做呢?谢谢!
是的,可以通过 Children of a Children 循环。
我认为你的代码是正确的。它应该可以正常工作。
这里有几个可能需要检查的问题。
确保每个级别的所有页面都将 ShowInMenus
设置为 true。 $Children
和 $Menu(1)
只有 returns 个 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>
我正在 SilverStripe 3.1 模板中组合一个 3 层导航菜单,并在我的模板中包含以下代码:
<% loop $Menu(1) %>
...
<% loop $Children %>
...
<% loop $Children %>
<li><a href="$Link">$Model</a></li>
<% end_loop %>
<% end_loop %>
<% end_loop %>
但是我没有从第三层获得我期望的输出。 Children 的 Children 真的有可能吗?如果没有,那我应该怎么做呢?谢谢!
是的,可以通过 Children of a Children 循环。
我认为你的代码是正确的。它应该可以正常工作。
这里有几个可能需要检查的问题。
确保每个级别的所有页面都将 ShowInMenus
设置为 true。 $Children
和 $Menu(1)
只有 returns 个 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>