twn39 / code

:memo: 代码笔记,通过 issue 的方式记录日常遇到的问题和学习笔记
13 stars 1 forks source link

Wagtail 添加主菜单 #427

Open twn39 opened 9 months ago

twn39 commented 9 months ago

通过 templatetags 获取站点主页面:

from django import template
from wagtail.models import Site

register = template.Library()

@register.simple_tag(takes_context=True)
def get_site_root(context):
    request = context.get('request')
    return Site.find_for_request(request).root_page

在模板中显示:

{% load navigation_tags wagtailcore_tags %}

        <div class="top-menu">
            {% get_site_root as site_root %}
            <nav>
                <p>
                    <a href="{% pageurl site_root %}">Home</a> |
                    {% for menuitem in site_root.get_children.live.in_menu %}
                        <a href="{% pageurl menuitem %}">{{ menuitem.title }}</a>
                    {% endfor %}
                </p>
            </nav>
        </div>

注:因为主页面从 context 的 request 拿到主页面,所以模板标签需要放在主模板中,例如: home.html,不然会获取不到 context