diff --git a/_config.yml b/_config.yml index a63240a07c..54c9bd1048 100644 --- a/_config.yml +++ b/_config.yml @@ -122,6 +122,9 @@ nav_external_links: - title: Just the Docs on GitHub url: https://github.com/just-the-docs/just-the-docs +# Show navigation error report +nav_error_report: true # default is false/nil. + liquid: error_mode: strict strict_filters: true diff --git a/_includes/components/breadcrumbs.html b/_includes/components/breadcrumbs.html index 8668791b46..c945277aed 100644 --- a/_includes/components/breadcrumbs.html +++ b/_includes/components/breadcrumbs.html @@ -1,144 +1,96 @@ {%- comment -%} Include as: {%- include components/breadcrumbs.html -%} Depends on: page, site. + Includes: components/site_nav.html. Results in: HTML for the breadcrumbs component. Overwrites: - node, pages_list, parent_page, grandparent_page. + nav_list_link, site_nav, nav_list_simple, nav_list_link_class, nav_category, + nav_anchor_splits, nav_breadcrumbs, nav_split, nav_split_next, nav_split_test, + nav_breadcrumb_link, nav_list_end_less, nav_list_end_count, nav_end_index, nav_breadcrumb. {%- endcomment -%} -{%- if page.url != "/" and page.parent -%} +{%- if page.url != "/" and page.parent and page.title -%} {%- capture nav_list_link -%} {%- endcapture -%} {%- capture site_nav -%} -{%- include_cached components/site_nav.html -%} +{%- include_cached components/site_nav.html all=true -%} {%- endcapture -%} -{%- if site_nav contains nav_list_link -%} - - {%- capture nav_list_simple -%} - "s requires that number - of potential ancestors to be popped from the stack. - - The number of occurrences of a string in nav_split_next is computed by removing - them all, then dividing the resulting size difference by the length of the string. - {%- endcomment %} - - {%- assign nav_breadcrumbs = "" | split: "" -%} - - {%- for nav_split in nav_anchor_splits -%} - {%- unless forloop.last -%} - - {%- assign nav_split_next = nav_anchor_splits[forloop.index] | strip -%} - - {%- assign nav_split_test = - nav_split_next | remove_first: nav_list_simple | prepend: nav_list_simple -%} - {%- if nav_split_test == nav_split_next -%} - {%- assign nav_breadcrumb_link = - nav_split | split: "" | append: "" -%} - {%- assign nav_breadcrumbs = nav_breadcrumbs | push: nav_breadcrumb_link -%} - {%- endif -%} - - {%- if nav_split_next contains "" -%} - {%- assign nav_list_end_less = nav_split_next | remove: "" -%} - {%- assign nav_list_end_count = - nav_split_next.size | minus: nav_list_end_less.size | divided_by: 5 -%} - {% for nav_end_index in (1..nav_list_end_count) %} - {%- assign nav_breadcrumbs = nav_breadcrumbs | pop -%} - {%- endfor -%} - {%- endif -%} - - {%- endunless -%} - {%- endfor -%} +{%- capture nav_list_simple -%} +"s requires that number + of potential ancestors to be popped from the stack. - {%- if node.has_children and page.grand_parent -%} + The number of occurrences of a string in nav_split_next is computed by removing + them all, then dividing the resulting size difference by the length of the string. +{%- endcomment %} - {%- if node.title == page.parent and node.parent == page.grand_parent -%} - {%- assign parent_page = node -%} - {%- endif -%} - {%- if node.title == page.grand_parent -%} - {%- assign grandparent_page = node -%} - {%- endif -%} - {%- if parent_page and grandparent_page -%} - {%- break -%} - {%- endif -%} +{%- assign nav_breadcrumbs = "" | split: "" -%} - {%- elsif node.has_children and node.title == page.parent and node.parent == nil -%} +{%- for nav_split in nav_anchor_splits -%} +{%- unless forloop.last -%} - {%- assign parent_page = node -%} - {%- break -%} +{%- assign nav_split_next = nav_anchor_splits[forloop.index] | strip -%} - {%- endif -%} +{%- assign nav_split_test = + nav_split_next | remove_first: nav_list_simple | prepend: nav_list_simple -%} +{%- if nav_split_test == nav_split_next -%} + {%- assign nav_breadcrumb_link = + nav_split | split: "" | append: "" -%} + {%- assign nav_breadcrumbs = nav_breadcrumbs | push: nav_breadcrumb_link -%} +{%- endif -%} +{%- if nav_split_next contains "" -%} + {%- assign nav_list_end_less = nav_split_next | remove: "" -%} + {%- assign nav_list_end_count = + nav_split_next.size | minus: nav_list_end_less.size | divided_by: 5 -%} + {% for nav_end_index in (1..nav_list_end_count) %} + {%- assign nav_breadcrumbs = nav_breadcrumbs | pop -%} {%- endfor -%} - - {%- capture nav_parent_link -%} - {{ page.parent }} - {%- endcapture -%} - - {%- if page.grand_parent %} - {%- capture nav_grandparent_link -%} - {{ page.grand_parent }} - {%- endcapture -%} - {%- endif -%} - {%- endif -%} +{%- endunless -%} +{%- endfor -%} + +{% if site.nav_error_report %} +{{ nav_error_report }} +{% endif %} + {%- endif -%} diff --git a/_includes/components/children_nav.html b/_includes/components/children_nav.html index ce2482a870..d233ebde9d 100644 --- a/_includes/components/children_nav.html +++ b/_includes/components/children_nav.html @@ -1,33 +1,89 @@ {%- comment -%} Include as: {%- include components/children_nav.html -%} - Depends on: page, site. + Depends on: page, site, nav_breadcrumbs. Results in: HTML for the children-navigation component. - Includes: - sorted_pages.html - toc_heading_custom.html + Includes: components/nav/sorted.html, toc_heading_custom.html. Overwrites: - child_pages. + nav_ancestor_links, nav_top_node_titles, nav_child_candidates, nav_children, + nav_child, nav_child_ok, nav_child_ancestor, nav_sorted. {%- endcomment -%} -{%- if page.has_children == true and page.has_toc != false -%} - {%- assign child_pages = site[page.collection] - | default: site.html_pages - | where: "parent", page.title - | where: "grand_parent", page.parent -%} +{%- comment -%} + Whether a page has any children is checked efficiently by inspecting the cached + site_nav. If the page has no children, nav_children is set to an empty array; + otherwise nav_children is left unset. +{%- endcomment -%} - {%- include sorted_pages.html pages = child_pages -%} +{%- if page.has_children == false -%} + {%- assign nav_children = "" | split: "" -%} +{%- else -%} - {%- if page.child_nav_order == 'desc' or page.child_nav_order == 'reversed' -%} - {%- assign sorted_pages = sorted_pages | reverse -%} + {%- assign nav_children = nil -%} + + {%- capture nav_list_link -%} + + {%- endcapture -%} + + {%- capture site_nav -%} + {%- include_cached components/site_nav.html all=true -%} + {%- endcapture -%} + + {%- capture nav_list_simple -%} +