Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 20, 2011 15:44:20

zili
От:
Зарегистрирован: 2010-05-19
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Меню сайта class="active"

У сайта есть меню, определенный пункт меню подсвечивается при нахождении в определенном разделе сайта
если в меню код вставить class=“active” то оно подсветится
Как организовать это в Django ?



Офлайн

#2 Апрель 22, 2011 12:04:19

alafin
Root
От: Киев, Украина
Зарегистрирован: 2006-04-06
Сообщения: 756
Репутация: +  3  -
Профиль   Отправить e-mail  

Меню сайта class="active"

Для начала создайте tamplatetags:

@register.inclusion_tag('menu.html', takes_context=True)
def render_menu(context, active):
nav_menu = [
dict(caption=_(u'Menu1'), url=reverse('menu1'), name='menu1'),
dict(caption=_(u'Menu2'), url=reverse('menu2'), name='menu2'),
dict(caption=_(u'Menu3'), url=reverse('menu3'), name='menu3'),
]
menu = nav_menu
selected_menu = filter(lambda x: x['name'] == active, menu)
selected_menu = selected_menu[0] if selected_menu else None
return {
'nav_menu': nav_menu,
'selected_menu': selected_menu,
}
Затем в menu.html
<ul> 
{% for menu in nav_menu %}
<li {% if menu == selected_menu %}class="active"{% endif %}>{{ menu.caption }}</li>
{% endfor %}
</ul>
И уже там где нужно отобразить меню делаем:
{% render_menu 'menu2' %}



Офлайн

#3 Апрель 28, 2011 12:48:48

zili
От:
Зарегистрирован: 2010-05-19
Сообщения: 64
Репутация: +  0  -
Профиль   Отправить e-mail  

Меню сайта class="active"

сделал так

 {%if 'news' in request.path %}class="active"{%endif%}



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version