about summary refs log tree commit diff stats
path: root/templates
diff options
context:
space:
mode:
Diffstat (limited to 'templates')
-rw-r--r--templates/macros.html12
-rw-r--r--templates/page.html7
2 files changed, 19 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 %}
diff --git a/templates/page.html b/templates/page.html
index 5c1a80b..2e2ef86 100644
--- a/templates/page.html
+++ b/templates/page.html
@@ -1,3 +1,4 @@
+{% import "macros.html" as macros %}
 {% extends "base.html" %}
 
 {% block title %}{{ page.title }} | {{ super() }}{% endblock %}
@@ -15,6 +16,12 @@
       </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 }}
   </main>