Make navbar dynamic

This also adds some caching to them for performance reasons
This commit is contained in:
Jake Howard 2022-06-14 21:53:31 +01:00
parent db6ca1ae8d
commit 5fb0fcd629
Signed by: jake
GPG Key ID: 57AFB45680EDD477
6 changed files with 56 additions and 11 deletions

View File

@ -1,4 +1,4 @@
{% load static wagtailcore_tags wagtailuserbar %}
{% load static wagtailcore_tags wagtailuserbar navbar_tags footer_tags cache %}
<!DOCTYPE html>
<html lang="en">
@ -23,13 +23,18 @@
<body class="{% block body_class %}{% endblock %}">
{% wagtailuserbar %}
{% include "navbar.html" %}
{% cache 3600 "navbar" page %}
{% navbar page %}
{% endcache %}
<main>
{% block content %}{% endblock %}
</main>
{% include "footer.html" %}
{% cache 3600 "footer" %}
{% footer %}
{% endcache %}
<script async defer type="text/javascript" src="{% static 'js/base.js' %}"></script>

View File

@ -1,7 +1,9 @@
{% load wagtailcore_tags %}
<footer class="footer">
<div class="has-text-centered">
<p>
&copy; <a href="/">TheOrangeOne</a> {% now "Y" %}
&copy; <a href="{% pageurl homepage %}">TheOrangeOne</a> {% now "Y" %}
</p>
</div>
<div class="has-text-centered is-size-7" id="to-top">

View File

@ -1,7 +1,9 @@
<nav class="navbar has-background-black has-text-white is-family-code" role="navigation" aria-label="main navigation">
{% load wagtailcore_tags %}
<nav class="navbar has-background-black has-text-white" role="navigation" aria-label="main navigation">
<div class="navbar-brand">
<a class="navbar-item" href="/">
<img src="">
<a class="navbar-item has-text-white is-family-code" href="{% pageurl homepage %}">
/home/theorangeone
</a>
<a role="button" class="navbar-burger" id="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navbar">
@ -11,11 +13,13 @@
</a>
</div>
<div id="navbar" class="navbar-menu has-background-black">
<div id="navbar" class="navbar-menu has-background-black is-family-code">
<div class="navbar-start">
<a class="navbar-item has-text-white">
Posts
</a>
{% for nav_page in nav_pages %}
<a class="navbar-item has-text-grey" href="{% pageurl nav_page %}">
~/{{ nav_page.slug }}
</a>
{% endfor %}
</div>
<div class="navbar-end is-hidden-touch mr-2">

View File

@ -0,0 +1,12 @@
from django.template import Library
from website.home.models import HomePage
register = Library()
@register.inclusion_tag("common/footer.html")
def footer() -> dict:
return {
"homepage": HomePage.objects.live().get(),
}

View File

@ -0,0 +1,19 @@
from django.template import Library
from wagtail.models import Page
from website.home.models import HomePage
register = Library()
@register.inclusion_tag("common/navbar.html")
def navbar(current_page: Page) -> dict:
homepage = HomePage.objects.live().get()
return {
"current_page": current_page,
"homepage": homepage,
"nav_pages": homepage.get_children()
.live()
.filter(show_in_menus=True)
.order_by("title"),
}

View File

@ -81,6 +81,9 @@ WSGI_APPLICATION = "website.wsgi.application"
DATABASES = {"default": env.db(default=f"sqlite:///{BASE_DIR}/db.sqlite3")}
CACHES = {"default": env.cache(default="dummycache://")}
# Internationalization
# https://docs.djangoproject.com/en/4.0/topics/i18n/