hugo-theme-relearn/layouts/partials/_relearn/pagePrev.gotmpl
2024-10-11 16:45:45 +02:00

106 lines
No EOL
3.5 KiB
Go Template

{{- $prev := "" }}
{{- if eq .Page.Kind "term" }}
{{- /* go to previous term page or taxonomy page if it is the first term */}}
{{- $taxonomy_page := .Site.GetPage .Data.Plural }}
{{- $pages := partialCached "partials/_relearn/pagesTaxonomy.gotmpl" $taxonomy_page $taxonomy_page.Path }}
{{- $prev = partial "inline/prev-term" (dict "collection" $pages "item" .) | default $taxonomy_page }}
{{- else if eq .Page.Kind "taxonomy" }}
{{- $prev = .Site.Home }}
{{- else if eq .Page.Kind "home" }}
{{- /* no prev here */}}
{{- else }}
{{- $prev = or (partial "inline/prev_page" .) .Site.Home }}
{{- end }}
{{- return $prev }}
{{- define "partials/inline/prev-term" }}
{{- $collection := .collection }}
{{- $item := .item }}
{{- $last := "" }}
{{- $result := "" }}
{{- range $collection }}
{{- if eq $item .Page.Page }}
{{- $result = $last }}
{{- break }}
{{- end }}
{{- $last = .Page.Page }}
{{- end }}
{{- return $result }}
{{- end }}
{{- define "partials/inline/prev_page" }}
{{- $previousVisible := "" }}
{{- $currentNode := . }}
{{- with partial "inline/parent" $currentNode }}
{{- $parent := . }}
{{- $pages := partialCached "_relearn/pages.gotmpl" (dict "page" $parent) $parent.Path }}
{{- $previousSibling := partial "inline/prev_sibling" (dict "siblings" $pages "currentNode" $currentNode) }}
{{- if $previousSibling }}
{{- $previousVisible = partial "inline/rightmost_descendant" $previousSibling }}
{{- if not $previousVisible }}
{{- if $previousSibling.RelPermalink }}
{{- $previousVisible = $previousSibling }}
{{- else }}
{{- $previousVisible = partial "inline/prev_page" $previousSibling }}
{{- end }}
{{- end }}
{{- else }}
{{- if $parent.RelPermalink }}
{{- $previousVisible = $parent }}
{{- else }}
{{- $previousVisible = partial "inline/prev_page" $parent }}
{{- end }}
{{- end }}
{{- end }}
{{- return $previousVisible }}
{{- end }}
{{- define "partials/inline/prev_sibling" }}
{{- $previousSibling := "" }}
{{- $siblings := .siblings }}
{{- $currentNode := .currentNode }}
{{- range $siblings }}
{{- if eq . $currentNode }}
{{- break }}
{{- else if not (or (.Params.hidden) (eq .Title "")) }}
{{- $previousSibling = . }}
{{- end }}
{{- end }}
{{- return $previousSibling }}
{{- end }}
{{- define "partials/inline/rightmost_descendant" }}
{{- $rightmostVisible := . }}
{{- $pages := (partialCached "_relearn/pages.gotmpl" (dict "page" $rightmostVisible) $rightmostVisible.Path) | collections.Reverse }}
{{- range $pages }}
{{- if not (or (.Params.hidden) (eq .Title "")) }}
{{- with partial "inline/rightmost_descendant" . }}
{{- if .RelPermalink }}
{{- $rightmostVisible = . }}
{{- break }}
{{- end }}
{{- end }}
{{- end }}
{{- end }}
{{- return $rightmostVisible }}
{{- end }}
{{- define "partials/inline/parent" }}
{{- $nonheadless := "" }}
{{- $page := . }}
{{- $parent := .Parent }}
{{- if not (partial "_relearn/pageIsSpecial.gotmpl" $page) }}
{{- with $parent }}
{{- $pages := partialCached "_relearn/pages.gotmpl" (dict "page" .) .Path }}
{{- range $pages }}
{{- if eq . $page }}
{{- $nonheadless = $parent }}
{{- break }}
{{- end }}
{{- end }}
{{- else }}
{{- $nonheadless = $parent }}
{{- end }}
{{- end }}
{{- return $nonheadless }}
{{- end }}