_includes/components/children_nav.html in just-the-docs-0.9.0 vs _includes/components/children_nav.html in just-the-docs-0.10.0
- old
+ new
@@ -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 -%}
+ <a href="{{ page.url | relative_url }}" class="nav-list-link">
+ {%- endcapture -%}
+
+ {%- capture site_nav -%}
+ {%- include_cached components/site_nav.html all=true -%}
+ {%- endcapture -%}
+
+ {%- capture nav_list_simple -%}
+ <ul class="nav-list">
+ {%- endcapture -%}
+
+ {%- assign nav_child_start = site_nav
+ | split: nav_list_link | last
+ | split: "</a>" | slice: 1 | first -%}
+
+ {%- assign nav_child_test = nav_child_start
+ | remove_first: nav_list_simple | prepend: nav_list_simple -%}
+
+ {%- if nav_child_start != nav_child_test -%}
+ {%- assign nav_children = "" | split: "" -%}
{%- endif -%}
+
{%- endif -%}
+{%- unless nav_children -%}
+
+ {%- comment -%}
+ The layout is assumed to include components/breadcrumbs.html before this file,
+ otherwise it needs to be included here.
+ {%- endcomment -%}
+
+ {%- assign nav_ancestors = "" | split: "" -%}
+ {%- for nav_link in nav_breadcrumbs -%}
+ {%- assign nav_title = nav_link | split: ">" | slice: 1 | first | append: ">" | remove: "</a>" -%}
+ {%- assign nav_ancestors = nav_ancestors | push: nav_title -%}
+ {%- endfor -%}
+
+ {%- assign nav_parenthood = site[page.collection] | default: site.html_pages
+ | where_exp: "item", "item.title != nil" | group_by: "parent" -%}
+
+ {%- assign nav_top_nodes = nav_parenthood
+ | where_exp: "item", "item.name == ''" | map: "items" | first -%}
+
+ {% assign nav_top_node_titles = nav_top_nodes | map: "title" -%}
+
+ {%- include components/nav/children.html node=page ancestors=nav_ancestors all=true -%}
+
+{%- endunless -%}
+
+{%- if nav_children.size >= 1 -%}
+
+ {%- if page.child_nav_order == 'desc' or page.child_nav_order == 'reversed' -%}
+ {%- assign nav_children = nav_children | reverse -%}
+ {%- endif -%}
+
<hr>
{% include toc_heading_custom.html %}
<ul>
-{% for child in sorted_pages %}
+ {% for nav_child in nav_children %}
<li>
- <a href="{{ child.url | relative_url }}">{{ child.title }}</a>{% if child.summary %} - {{ child.summary }}{% endif %}
+ <a href="{{ nav_child.url | relative_url }}">{{ nav_child.title }}</a>{% if nav_child.summary %} - {{ nav_child.summary }}{% endif %}
</li>
-{% endfor %}
+ {% endfor %}
</ul>
+
+{%- endif -%}