Wagtail 渲染页面树

Wagtail render page tree

我正在尝试创建一个站点地图,用户可以使用它来查看站点的层次结构、子页面和父页面等,但我似乎找不到显示它的方法。有没有我可以使用的应用程序,或者我需要编写自定义函数吗?

您可以获得这样的已发布页面:

Page.objects.live()

https://docs.wagtail.io/en/v0.7/core_components/pages/advanced_topics/queryset_methods.html#module-wagtail.wagtailcore.query

默认顺序是路径。使用 depth 字段(一个数字)和一些 css 来创建层次结构。

您可以像这样向页面添加上下文:

class SitemapPage(Page):
    ...

    def get_context(self, request, *args, **kwargs):
        context = super().get_context(request, *args, **kwargs)
        context.update({'pages': Page.objects.live()})
        return context

在您的模板中:

{% for obj in pages %}
   <a href="{% pageurl obj %}" class="level-{{ obj.depth }}">{{ obj.title }}</a>
{% endfor %}