我有一个复杂的导航,我正在用Django CMS构建。在导航中,有三个级别的页面。渲染2级导航时,我想首先按顺序显示所有2级页面,然后显示所有2级页面及其子页面。
以下是树结构的示例:
输出应该是这样的:
<ul>
<li>Homepage</li>
<li>About Us
<ul class="lvl-2">
<!-- All leaf nodes are grouped first -->
<li>Level Two</li>
<li>Lorem Ipsum</li>
<!-- Then the nodes with children after -->
<li>In Depth
<ul class="lvl-3">
<li>Who we are</li>
<li>What we do</li>
</ul>
</li>
</ul>
</li>
<li>Contact Us
<ul class="lvl-2">
<li>Etcetera</li>
</ul>
</li>
</ul>
我更愿意找到一个不需要在节点上循环两次的解决方案。谢谢!
答案 0 :(得分:0)
这是我用于显示每个节点任意数量子节点的menu.html文件:
{% load menu_tags %}
{% for child in children %}
<li class="{% if child.selected or child.ancestor %}active{% endif %}{% if child.children %} dropdown{% endif %}">
<a class="{% if child.children %}dropdown-toggle{% endif %}" {% if child.children %}data-toggle="dropdown"{% endif %} href="{% if child.children %}#{% else %}{{ child.attr.redirect_url|default:child.get_absolute_url }}{% endif %}">{{ child.get_menu_title|safe }}{% if child.children %} <b class="caret"></b>{% endif %}</a>
{% if child.children %}
<ul class="dropdown-menu">
{% show_menu from_level to_level extra_inactive extra_active template "" "" child %}
</ul>
{% endif %}
</li>
{% endfor %}
有一些Twitter Bootstrap特定的分类,但希望这会让你接近你需要的。