Страницы меню в Mezzanine

В Mezzanine/Django у меня есть несколько вложенных страниц, но только самая глубоко вложенная страница имеет контент. Для каждой промежуточной страницы я просто хочу показать меню ее непосредственных дочерних элементов. Например, учитывая макет:

Chapter 1
    Section 1.1
        Subsection 1.1.1
        Subsection 1.1.2
    Section 1.2
        Subsection 1.2.1
Chapter 2
    Section 2.1
        Subsection 2.1.1

Страница, отмеченная как chapter-1, должна просто показывать список

* Section 1.1
* Section 1.2

Я могу сделать это, создав собственные шаблоны для каждой главы и раздела, содержащие:

{% load pages_tags %}
{% page_menu "pages/menus/chapter_menu.html" %}

где chapter_menu.html — мой шаблон меню:

{% load pages_tags %}
<ul>
{% for page in page_branch %}
{% if page.in_menu %}
{% if page.is_current_child %}
<li>
    <a href="{{ page.get_absolute_url }}">{{ page.title }}</a>
</li>
{% else %}
{% page_menu page %}
{% endif %}
{% endif %}
{% endfor %}
</ul>

Однако имя каждого шаблона (например, pages/chapter-1.html) должно соответствовать слагу страницы, на которую он ссылается, поэтому мне нужно дублировать эти шаблоны для каждой главы и каждого раздела.

Как правильно это сделать без дублирования шаблонов?


person xnx    schedule 23.04.2015    source источник


Ответы (1)


Я не думаю, что вам нужно создавать шаблон для каждого меню. я решил это, используя tree.html и my_menu.html из введите здесь описание ссылки

Поэтому я просто заменил menus/tree.html на:

{% load i18n future pages_tags %}
{% spaceless %}
{% page_menu "pages/menus/my_menu.html" %}
{% endspaceless %}

и добавил меню/my_menu.html:

{% load pages_tags %}
{% for page in page_branch %}
    {% if page.is_current_child %}
    <a href="{{ page.get_absolute_url }}">{{ page.title }}</a>
    {% endif %}
    {% if page.is_current_or_ascendant %}
        {% if page.has_children_in_menu %}{% page_menu page %}{% endif %}
    {% endif %}
{% endfor %}
person joeskru    schedule 06.05.2015