silverstripe函数返回菜单级别

时间:2011-08-03 11:18:51

标签: silverstripe

我正在尝试编写一个函数,返回页面上可见的菜单级别...目前我正在使用<%if%>模板中的陈述,即:

<div class="<% if Menu(1) %>navA<% end_if %> <% if Menu(2) %>navB<% end_if %> <% if Menu(3) %>navC<% end_if %>">...</div>

如果页面上有3个菜单级别,则返回<div class="navA navB navC">

我想要的是一个只返回当前页面上最低级菜单的函数,即<div class="navC">

由于

2 个答案:

答案 0 :(得分:1)

这是完全可能的。 只需将以下内容添加到Page_Controller课程中:

function LowestLevel() {
    $i = 1;
    while($this->getMenu($i)->count() > 0) $i++;
    return 'level'.($i-1);
}

现在您可以在模板中调用它,如下所示:

<div>lowest level: $LowestLevel</div>

$ LowestLevel将打印'level1','level2'等。

万一你的班级名称必须像'navA','navB'......你需要做一些匹配,比如'level1' - &gt;'navA',这不应该太难 - 回到我,如果你需要任何帮助。

答案 1 :(得分:0)

以下内容(未经测试):

<div class="<% if Menu(3) %>navC<% else_if Menu(2) %>navB<% else %>navA<% end_if %>">...</div>

您可能需要考虑在Controller中使用一些自定义代码来处理逻辑问题,但这应该可以帮助您...