2011-05-12 41 views
2

如何确定我目前在Lift中的页面?高光当前菜单项升降

在Django,例如,在我的基础模板我有简单的检查,像这样的:

<li {% ifequal main_navigation "home" %} class="selected"{%endifequal%}> 
    <a href="{% url home %}">Home</a> 
</li> 
<li {% ifequal main_navigation "risk"%}class="selected"{%endifequal%}> 
    <a href="{% url risk %}">Risk</a> 
</li> 

<li {% ifequal main_navigation "contact" %}class="selected"{%endifequal%}> 
    <a href="{% url contact %}">Contact</a> 
</li> 

这里,如果决定了上下文变量main_navigation设置为。

回答

5

我假设您使用站点地图作为菜单。

使用Menu.builder片段呈现菜单时,可以使用其他参数进一步调整菜单。这个例子将只呈现菜单的第一层,如果它是当前页面,则将类当前添加到菜单项。

设计师友好例如:

<div class="lift:Menu.builder?level=0;expand=false;li_item:class=current"></div> 

<lift:Menu.builder li_item:class="selected" level="0" expand="false" /> 

详细内容见电梯维基:http://www.assembla.com/wiki/show/liftweb/SiteMap

+0

0级似乎表明一切 - 而不仅仅是顶级.. – drozzy 2011-05-13 14:12:51

+0

我想我简化了一下我的例子:我也使用expand = false。我会编辑我的anwser来添加这个。然后,顶级菜单将显示站点地图中未隐藏的所有项目,而不是在子菜单中。请参阅https://github.com/lift/examples/blob/master/combo/example/src/main/scala/bootstrap/liftweb/Boot.scala以获得子菜单 – 2011-05-13 19:00:00

+0

的站点地图的一个很好的示例expand = false并不会帮助您,但没关系,我打开了另一个问题:http://stackoverflow.com/questions/5993350/how-to-highlight-parent-of-the-current-page – drozzy 2011-05-13 19:04:02

1

如果您使用Lift的SiteMap和Menu功能,我认为这是自动处理的。你可以在这里阅读:http://simply.liftweb.net/index-3.2.html#toc-Subsection-3.2

要回答你的更广泛的问题,在代码片段(不是模板)中,你可以使用LiftRules.context,它返回一个包含路径属性的HTTPContext。