{{- $currentNode := . }}
{{- if eq .Site.Params.ordersectionsby "title"}}
{{- range .Site.Home.Sections.ByTitle}}
{{- template "menu-nav" dict "sect" . "currentnode" $currentNode "level" 1}}
{{- end}}
{{- else}}
{{- range .Site.Home.Sections.ByWeight}}
{{- template "menu-nav" dict "sect" . "currentnode" $currentNode "level" 1}}
{{- end}}
{{- end}}
{{- define "menu-nav" }}
{{- $currentNode := .currentnode }}
{{- $level := .level }}
{{- with .sect}}
{{- if .IsSection}}
{{- if or (.IsAncestor $currentNode) (.Params.alwaysopen) }}
{{- $numberOfPages := (add (len .Pages) (len .Sections)) }}
{{- if ne $numberOfPages 0 }}
{{- .Scratch.Set "pages" .Pages }}
{{- if .Sections}}
{{- .Scratch.Set "pages" (.Pages | union .Sections) }}
{{- end}}
{{- $pages := (.Scratch.Get "pages") }}
{{- if eq .Site.Params.ordersectionsby "title"}}
{{- range $pages.ByTitle }}
{{- if and .Params.hidden (not $.showhidden) }}
{{- else}}
{{- template "menu-nav" dict "sect" . "currentnode" $currentNode }}
{{- end}}
{{- end}}
{{- else}}
{{- range $pages.ByWeight }}
{{- if and .Params.hidden (not $.showhidden) }}
{{- else}}
{{- template "menu-nav" dict "sect" . "currentnode" $currentNode "level" (add $level 1) }}
{{- end}}
{{- end}}
{{- end}}
{{- end}}
{{end}}
{{- else}}
{{- if not .Params.Hidden }}
{{- end}}
{{- end}}
{{- end}}
{{- end}}