Add 404 page which fits the rest of the theme

* Noting that (as of 0.14) zola does not pass much of a context when
  rendering the 404 page, so things like current URL/path aren't
  available
* To work around this the `menu` macro has been split into `menu_for`
  which accepts a parameter for which item is active.
* The previous macro continues to work as is, forwarding the results of
  figuring out which item is active to the new `menu_for` macro
* The added 404 page will then use the `menu_for` macro and pass in a
  blank item
This commit is contained in:
Ivan Petkov 2021-12-07 17:25:02 -08:00
parent f37c65c951
commit b04b1f5951
No known key found for this signature in database
GPG key ID: BB6F9EFC065832B6
3 changed files with 28 additions and 2 deletions

16
templates/404.html Normal file
View file

@ -0,0 +1,16 @@
{% extends "index.html" %}
{% block title %}
404
{% endblock title %}
{% block header_menu %}
{{ menu_macros::menu_for(config=config, current_item="") }}
{% endblock header_menu %}
{% block content %}
<div class="post">
<h1 class="post-title">Lost?</h1>
<p>This page does not exist.</p>
</div>
{% endblock content %}

View file

@ -45,7 +45,9 @@
</div> </div>
</div> </div>
{% block header_menu %}
{{ menu_macros::menu(config=config, current_path=current_path) }} {{ menu_macros::menu(config=config, current_path=current_path) }}
{% endblock header_menu %}
</header> </header>
{% endblock header %} {% endblock header %}

View file

@ -2,8 +2,6 @@
{%- if config.extra.menu_items %} {%- if config.extra.menu_items %}
{%- set menu_items = config.extra.menu_items -%} {%- set menu_items = config.extra.menu_items -%}
<nav class="menu">
<ul class="menu__inner">
{%- for item in menu_items %} {%- for item in menu_items %}
{%- set abs_item_url = item.url | replace(from="$BASE_URL", to=config.base_url) -%} {%- set abs_item_url = item.url | replace(from="$BASE_URL", to=config.base_url) -%}
{%- set is_current = current_url == abs_item_url ~ "/" {%- set is_current = current_url == abs_item_url ~ "/"
@ -27,6 +25,16 @@
{%- set current_item = base_item -%} {%- set current_item = base_item -%}
{% endif -%} {% endif -%}
{{ menu_macros::menu_for(config=config, current_item=current_item) }}
{% endif -%}
{% endmacro menu %}
{% macro menu_for(config, current_item) %}
{%- if config.extra.menu_items %}
{%- set menu_items = config.extra.menu_items -%}
<nav class="menu">
<ul class="menu__inner">
{%- for item in menu_items %} {%- for item in menu_items %}
<li {%- if current_item and current_item == item %} class="active" {%- endif %}> <li {%- if current_item and current_item == item %} class="active" {%- endif %}>
{%- if item.newtab -%} {%- if item.newtab -%}