diff options
author | Emilio Ziniades | 2024-05-12 15:54:40 +0200 |
---|---|---|
committer | Alan Pearce | 2024-05-13 10:32:48 +0000 |
commit | baabcb634bdffb8623eacc410e8707a3b4afe2b5 (patch) | |
tree | cc19bc0ee1fc64ae834c2adac172435e27e4e99e /templates/macros.html | |
parent | 2c9ca00042ec7c1a4da5ad927f19e8849e5ae96c (diff) | |
download | zola-bearblog-baabcb634bdffb8623eacc410e8707a3b4afe2b5.tar.lz zola-bearblog-baabcb634bdffb8623eacc410e8707a3b4afe2b5.tar.zst zola-bearblog-baabcb634bdffb8623eacc410e8707a3b4afe2b5.zip |
feat(table of contents): Add table of contents
This feature is disabled by default, but can be enabled/disabled globally or per-page. Zola already provides `page.toc`, this PR simply adds a macro to recursively render that data in nested `ul`s. It also establishes some configuration options to display it and set a maximum headers level.
Diffstat (limited to 'templates/macros.html')
-rw-r--r-- | templates/macros.html | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/templates/macros.html b/templates/macros.html new file mode 100644 index 0000000..2ad23e6 --- /dev/null +++ b/templates/macros.html @@ -0,0 +1,12 @@ +{% macro table_of_contents(toc, max_level) %} +<ul> + {% for header in toc %} + <li> + <a href="{{ header.permalink | safe }}">{{ header.title }}</a> + {% if header.children and header.level < max_level %} + {{ self::table_of_contents(toc=header.children, max_level=max_level) }} + {% endif %} + </li> + {% endfor %} +</ul> +{% endmacro %} |