开始了一个与Wagtail CMS合作的项目,我对他们的页面原理的理解是它是层次结构的,这使我得出结论页面是父/子相关或兄弟姐妹。
所以我如何做到这一点是我的主页登陆,所有其他页面都是这个页面的孩子。
这是我的结构
Home page
/ | \
News About us Events
/ | \ / | \
n_item n_item n_item e_item e_item e_item
所以他们是6种类型的页面
然后,我在上面列表中的星号页面(*)的提升标签中勾选了“在菜单中显示:”。
n_item和e_item将允许编辑(非技术)人员根据需要添加这些页面,因为它们将分别作为“新闻”和“事件”页面中内容的一部分列出。
理想情况下,编辑不应该为主页,新闻,关于我们和活动创建兄弟姐妹。如果编辑者不是超级用户,是否也可以限制编辑者可以添加页面的功能?
但似乎没有一种明确的简单方法(可能是标签)来生成我的菜单。这就是我在研究中发现的。
答案 0 :(得分:1)
你见过https://github.com/rkhleics/wagtailmenus吗?它的设计旨在以一致,灵活的方式管理和呈现多级导航和简单的平面菜单。"
答案 1 :(得分:0)
我也想自动生成菜单,但是只有首页才能生成。我可能做过一些幼稚的事情,但是它可以工作。我正在使用 Wagtail 2.5.1和Django 2.2.2 。
我的Wagtail页面结构如下:
Home page
/ \
Blog About
/ | \
n_item n_item n_item
我正在使用bootstrap4,所以这是我在base.html模板中的导航:
{% with root_p=request.site.root_page %}
{# this is static item for home #}
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link {% if '/' == request.path %} active {% endif %}" href="{{root_p.url}}">{{root_p.slug}}</a>
</li>
{# Here I am looping home's childrens #}
{% for nav in root_p.get_children.live %}
{% if nav.show_in_menus %}
<li class="nav-item">
<a class="nav-link {% if nav.slug in request.path %} active {% endif %}" href="{{nav.url}}">{{nav.slug}}</a>
</li>
{% endif %}
{% endfor %}
</ul>
{% endwith %}
现在,我可以更改弹头,勾选/取消选中“在菜单中显示”,并且我的引导菜单会反映这些更改。