Feature: Allow unlimited multi-level navigation (#1431)

* Allow unlimited multi-level navigation

This PR supersedes #462.

The only user-level difference from #462 is that disambiguation of parent pages has to use either `grand_parent` or `ancestor` titles: the somewhat unnatural `section_id` and `in_section` fields are not supported.

The implementation has been significantly simplified by the changes introduced in v0.7.0 of the theme.

* Detect cyclic parenthood

A page should not have a parent or ancestor with the same title. If it does, the location of the repeated link is marked by ∞, to facilitate debugging the navigation (and an unbounded loop leading to a build exception is avoided).

* Add nav_error_report warning in main navigation

When activated by `nav_error_report: true` in `_config.yml`, displays warnings about pages with the same title as their parent page or an ancestral page.

* Cache site-nav with links to all pages

The extra cached site-nav is used for determining breadcrumbs and children navigation, which may involve pages that are excluded from the main navigation.

* Replace code for determining children by inclusion of components/nav/children.html

* Update CHANGELOG.md

---------

Co-authored-by: Matt Wang <matt@matthewwang.me>
This commit is contained in:
Peter Mosses
2024-08-20 22:34:11 +02:00
committed by GitHub
parent 0fc476871c
commit a4e4e312aa
12 changed files with 526 additions and 464 deletions

View File

@@ -28,7 +28,7 @@ layout: table_wrappers
{{ content }}
{% endif %}
{% if page.has_children == true and page.has_toc != false %}
{% if page.has_toc != false %}
{% include components/children_nav.html %}
{% endif %}
</main>