all repos — zola-bearblog @ baabcb634bdffb8623eacc410e8707a3b4afe2b5

Port of bear blog theme to zola

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.

Emilio Ziniades
commit

baabcb634bdffb8623eacc410e8707a3b4afe2b5

parent

2c9ca00042ec7c1a4da5ad927f19e8849e5ae96c

1 file changed, 7 insertions(+), 0 deletions(-)

changed files
M templates/page.htmltemplates/page.html
@@ -1,3 +1,4 @@
+{% import "macros.html" as macros %} {% extends "base.html" %} {% block title %}{{ page.title }} | {{ super() }}{% endblock %}
@@ -14,6 +15,12 @@ </time>
</i> </p> {%- endif %} + {%- endif %} + {%- if config.extra.table_of_contents.show and not page.extra.hide_table_of_contents and page.toc %} + <details {%if config.extra.table_of_contents.visible_on_load %}open{% endif %}> + <summary>Table of Contents</summary> + {{ macros::table_of_contents(toc=page.toc, max_level=config.extra.table_of_contents.max_level) }} + </details> {%- endif %} <main> {{ page.content | safe }}