diff --git a/_includes/components/children_nav.html b/_includes/components/children_nav.html index 7d61de7e..5095371f 100644 --- a/_includes/components/children_nav.html +++ b/_includes/components/children_nav.html @@ -1,55 +1,23 @@ {%- comment -%} - Include as: {%- include components/children_nav.html -%} - Depends on: page, site, nav_breadcrumbs. - Results in: HTML for the children-navigation component. - Includes: components/nav/sorted.html, toc_heading_custom.html. - Overwrites: - nav_ancestor_links, nav_top_node_titles, nav_child_candidates, nav_children, - nav_child, nav_child_ok, nav_child_ancestor, nav_sorted. + Updated to support both `children` and `subcategories` for flexible YAML structures. {%- endcomment -%} -{%- 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. (The site_nav is rendered the first time - it is included, and that may overwrite various variables.) -{%- endcomment -%} -{%- if page.has_children == false -%} +{%- if page.has_children == false and page.subcategories == nil -%} {%- assign nav_children = "" | split: "" -%} {%- else -%} {%- capture site_nav -%} - {%- include_cached components/site_nav.html all=true -%} - {%- endcapture -%} - {%- assign nav_children = nil -%} - {%- capture nav_list_link -%} - + {%- include_cached components/site_nav.html all=true -%} {%- endcapture -%} - {%- capture nav_list_simple -%} - " | 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 -%} + {%- assign nav_children = site_nav | where_exp: "item", "item.parent == page.url" | concat: page.subcategories -%} {%- 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 -%} +{%- unless nav_children == empty -%} {%- assign nav_ancestors = "" | split: "" -%} {%- for nav_link in nav_breadcrumbs -%} {%- assign nav_title = nav_link | split: ">" | slice: 1 | first | append: ">" | remove: "" -%} {%- 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" -%} + {%- 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 -%} @@ -58,11 +26,11 @@ {%- endif -%}