Есть ли лучший способ выписать мой шаблон django-treemenu? - PullRequest
0 голосов
/ 30 сентября 2010

Я использую django-treemenus

Мне любопытно посмотреть, есть ли лучший способ выписать мой menu.html, который является моим шаблоном меню. Для каждого уровня, который я добавляю в свое меню, мне нужно вручную добавлять уровень в шаблон моего меню.

Вот мой menu.html (шаблон меню). Это работает, но можно ли написать более эффективно?

{% load tree_menu_tags %}
{% ifequal menu_type "horizontal" %}
    <ul><!-- Root -->
        {% for menu_item in menu.root_item.children %}
                <!-- Level 1-->
                {% if menu_item.has_children %}                    
                    <li><a href="{{ menu_item.url }}">{{ menu_item.caption }}</a>
                        <ul>
                            {% for child in menu_item.children %}
                                <!-- Level 2-->
                                {% if child.has_children %}
                                    <li><a href="{{ child.url }}">{{ child.caption }}</a>
                                        <ul>
                                            {% for childchild in child.children %}
                                                <!-- Level 3-->
                                                {% if childchild.has_children %}
                                                    <li><a href="{{ childchild.url }}">{{ childchild.caption }}</a>
                                                        <ul>
                                                            {% for childchildchild in childchild.children %}                                                                    
                                                                {% show_menu_item childchildchild %}
                                                            {% endfor %}
                                                        </ul>
                                                    </li>
                                                {% else %}
                                                    <li><a href="{{ childchild.url }}">{{ childchild.caption }}</a></li>
                                                {% endif %}
                                                <!-- End Level 3 -->
                                            {% endfor %}
                                        </ul>
                                    </li>
                                {% else %}
                                    <li><a href="{{ child.url }}">{{ child.caption }}</a></li>
                                {% endif %}
                                <!-- End Level 2 -->
                            {% endfor %}
                        </ul>
                    </li>
                {% else %}
                    <li><a href="{{ menu_item.url }}">{{ menu_item.caption }}</a></li>
                {% endif %}    
                <!-- End Level 1 -->
        {% endfor %}
    </ul><!-- End Root -->
{% endifequal %}

1 Ответ

1 голос
/ 30 сентября 2010

Я бы использовал пользовательский тег шаблона для такого рода вещей: http://docs.djangoproject.com/en/dev/howto/custom-template-tags/

Здесь вы можете найти несколько замечательных примеров: http://code.google.com/p/django-page-cms/source/browse/trunk/pages/templatetags/pages_tags.py?r=783

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...