Подсветка текущего пункта меню

Как определить, на какой странице я сейчас нахожусь в 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>

здесь if определяет значение контекстной переменной main_navigation.


person Andriy Drozdyuk    schedule 12.05.2011    source источник


Ответы (2)


Я предполагаю, что вы используете карту сайта для своего меню.

При рендеринге меню с помощью фрагмента Menu.builder вы можете использовать дополнительные параметры для дальнейшей настройки меню. В этом примере будет отображаться только первый уровень меню и добавлен класс current к пункту меню, если это текущая страница.

удобный для дизайнера пример:

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

or

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

для получения более подробной информации см. вики лифта: http://www.assembla.com/wiki/show/liftweb/SiteMap

person Marco Tolk    schedule 13.05.2011
comment
Я думаю, что немного упростил свой пример: я также использую expand=false. Я отредактирую свой ответ, чтобы добавить это. Затем в меню верхнего уровня будут отображаться все элементы карты сайта, которые не скрыты и не находятся в подменю. см. github.com /lift/examples/blob/master/combo/example/src/main/ — хороший пример карты сайта с подменю. - person Marco Tolk; 13.05.2011
comment
expand=false не помогает, но это нормально. Я открыл для этого другой вопрос: stackoverflow.com/questions/5993350/ - person Andriy Drozdyuk; 13.05.2011

Если вы используете функции SiteMap и Menu в Lift, я думаю, что об этом позаботятся автоматически. Вы можете прочитать об этом здесь: http://simply.liftweb.net/index-3.2.html#toc-Subsection-3.2

Чтобы ответить на ваш более широкий вопрос, внутри фрагмента (не шаблона) вы можете использовать LiftRules.context, который возвращает HTTPContext, включая атрибут пути.

person Ethan Jewett    schedule 13.05.2011