1

我在 SilverStripe 3.1 模板中组合了一个 3 层导航菜单,并在我的模板中包含以下代码:

<% loop $Menu(1) %>
...
  <% loop $Children %>
...
    <% loop $Children %>
     <li><a href="$Link">$Model</a></li>
    <% end_loop %>
  <% end_loop %>
<% end_loop %>

但是我没有从第三层得到我期望的输出。真的有可能得到孩子的孩子吗?如果没有,那我应该怎么做?谢谢!

4

1 回答 1

3

是的,可以遍历子循环的子循环。

你的代码对我来说看起来是正确的。它应该可以正常工作。

以下是一些可能需要检查的问题。

确保每个级别的所有页面都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>
于 2015-04-29T04:51:41.197 回答