Navigation 有没有可能在SilverStripe菜单中找到孩子的孩子?

Navigation 有没有可能在SilverStripe菜单中找到孩子的孩子?,navigation,silverstripe,template-variables,Navigation,Silverstripe,Template Variables,我在SilverStripe 3.1模板中整合了一个三层导航菜单,模板中有以下代码: <% loop $Menu(1) %> ... <% loop $Children %> ... <% loop $Children %> <li><a href="$Link">$Model</a></li> <% end_loop %> <% end_loop %>

我在SilverStripe 3.1模板中整合了一个三层导航菜单,模板中有以下代码:

<% 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
    不是内置页面变量。这必须是您设置的自定义变量。确保已将其设置为页面、已填入值且可在前端访问

    下面是一些测试模板代码,可用于检查站点树的输出。这可能有助于您调试问题:


    该代码看起来正常。您应该能够像现在这样通过子循环的子循环。是否所有页面都设置为“显示菜单”
    $Children
    仅返回设置为
    ShowInMenus
    的页面。否则,您也可以使用
    $AllChildren
    获取隐藏页面。站点树是否有3层深的页面?什么是
    $Model
    ?这是您添加到页面类中的自定义变量吗?@3dgoo是的,我希望显示的所有页面都已正确设置ShowInMenu。是的,共有三层。是的,$Model是一个自定义变量。@3dgoo进一步看,我得到的是$Link的值,但不是Model,所以我只需要研究自定义变量。谢谢你的帮助;你想把你的评论作为一个答案吗?很高兴我能帮上忙。当然,我会发表我的评论作为答案。当你发现你的问题时,一定要分享你的解决方案,以防将来对任何人都有帮助。