接下來,我們做出可以連接首頁和其他添加的頁面,這個 page 會像 footer 一樣,會固定在每個頁面上。
首先,在的 base/templatetags/navigation_tags.py 文件中創建一個模板標籤:
from django import template
# import site:
from wagtail.models import Site
from base.models import FooterText
register = template.Library()
# ... keep the definition of get_footer_text and add the get_site_root template tag:
# 寫在前面的 get_footer_text 要保留
@register.simple_tag(takes_context=True)
def get_site_root(context):
return Site.find_for_request(context["request"]).root_page
在前面的代碼中,你使用了 get_site_root 模板標籤來檢索你網站的根頁面,在這個例子中是你的 HomePage。
現在,創建 mysite/templates/includes/header.html 文件並添加以下內容:
{% load wagtailcore_tags navigation_tags %}
<header>
{% 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>
</header>
在前面的模板中,你加載了 wagtailcore_tags 和 navigation_tags。有了這些標籤,你可以為你的 Wagtail 項目生成導航 menu。
{% get_site_root as site_root %}
檢索你的 HomePage 並將其賦值給變量 site_root。
<a href="{% pageurl site_root %}">Home</a> |
使用 pageurl 模板標籤和 site_root 作為參數創建指向你的 HomePage 的鏈接。它生成一個指向你的 HomePage 的鏈接,標籤為 Home,後面跟著一個管道符號 |,用來分隔 menu 項。
{% for menuitem in site_root.get_children.live.in_menu %}
是一個循環,遍歷你的 HomePage 的子頁面,這些子頁面是活躍的並且包括在 menu 中。
最後,通過修改你的 mysite/templates/base.html 文件,將你的頭部模板添加到你的基礎模板中:
<body class="{% block body_class %}{% endblock %}">
{% wagtailuserbar %}
{# Add your header template to your base template: #}
{# 將 header 的 template 加在 base template #}
{% include "includes/header.html" %}
{% block content %}{% endblock %}
{% include "includes/footer.html" %}
{# Global javascript #}
<script type="text/javascript" src="{% static 'js/mysite.js' %}"></script>
{% block extra_js %}
{# Override this in templates to add extra javascript #}
{% endblock %}
</body>
你可以通過以下方式將任何頂層頁面,如你的首頁、Blog 索引頁、作品集頁面和表單頁面添加到網站 menu 中:
在本教程的下一部分,我們將向你展示如何設計你的網站並改善其用戶體驗。