我正在尝试在Django / Wagtail中渲染动态菜单。到目前为止,它运行良好,但是当我遍历页面树并到达最后一个孩子时,菜单消失了。
我想知道是否有一种编写代码的方法,以便当用户单击所有页面并到达一个没有子代的页面时,我是否有可能获取该页面的同级并显示那些链接而不是空白?还是我有办法告诉w,如果页面没有孩子,请渲染页面的同级兄弟?
这样,即使有人在最后一个孩子上,也可以轻松浏览页面。
到目前为止,我正在使用wagtailmenus来渲染flat_menu。 通过执行以下操作,我能够使它完成工作:
{% for content in page.get_siblings %}
这样做可以使兄弟姐妹作为实验,但是当然不再有逻辑来让孩子得到孩子。下面是我当前的代码-我真的不知道在注释的3行代码中可以实现我的目标的方法。我尝试了几件事,但是没有运气。
{% load static wagtailcore_tags menu_tags %}
<aside class="sidebar sidebar-boxed sidebar-dark">
<ul class="nav sidenav dropable sticky">
{% for content in page.get_children %}
<li class="{{ content.active_class }}">
<a href="{% pageurl content %}">{{ content.title }}</a>
#{% if content.has_children_in_menu %}
#{{ content.sub_menu.render_to_template }}
#{% endif %}
</li>
{% endfor %}
</ul>
</aside>
我的预期结果是,当我碰到最后一个孩子时,菜单会将最后一个孩子的兄弟姐妹显示为菜单,而不是空白。
无论导航到哪个子页面,我都希望为每个父页面提供唯一且一致的侧边栏菜单。
答案 0 :(得分:0)
以下仅使用Wagtail页面层次结构。它仅限于两级层次结构。
{% load static wagtailcore_tags %}
<aside class="sidebar sidebar-boxed sidebar-dark">
<ul class="nav sidenav dropable sticky">
{% for item in page.get_children.live.in_menu %}
<li class="{{ item.active_class }}">
<a href="{% pageurl item %}">{{ item.title }}</a>
{% for subitem in item.get_children.live.in_menu %}
<li><a href="{% pageurl subitem %}{{ subitem.title }}</a></li>
{% empty %}
{% for sib in item.get_siblings.live.in_menu %}
<li><a href="{% pageurl sib %}{{ sib.title }}</a></li>
{% endfor %}
{% endfor %
</li>
{% endfor %}
</ul>
</aside>