hugo-theme-relearn/layouts/partials/_relearn/linkObject.gotmpl

61 lines
2.2 KiB
Go Template
Raw Normal View History

{{- $linkObject := "" }}
{{- $u := urls.Parse .url }}
{{- $path := strings.TrimPrefix "./" $u.Path }}
{{- $searchLocal := .searchLocal | default true }}
{{- $searchGlobal := .searchGlobal | default true }}
{{- $searchPage := .searchPage | default true }}
{{- $searchResource := .searchResource | default true }}
{{- $site := .page.Site }}
{{- $page := .page }}
{{- $transSite := "" }}
{{- $transPage := "" }}
{{- $lang := $u.Query.Get "lang" }}
{{- if and $site.Params.enableLegacyLanguageLinks (not $lang) }}
{{- /* is it a legacy link into another translation? */}}
{{- if strings.HasPrefix $path "/" }}
{{- range $site.Sites }}
{{- $lang = .Language.Lang }}
{{- $prefix := printf "/%s" $lang }}
{{- $suffix := strings.TrimPrefix $prefix $path | default "/" }}
{{- /* with the second check we check if the prefix was finished;
eg. /pir/index.html vs. /pirate/index.html, were the latter is
an external address outside of this site */}}
{{- if and (strings.HasPrefix $path $prefix) (strings.HasPrefix $suffix "/") }}
{{- $path = $suffix }}
{{- $transSite = . }}
{{- break }}
{{- end }}
{{- end }}
{{- end }}
{{- if not $transSite }}
{{ $lang = $site.Language.Lang }}
{{ $transSite = $site }}
{{- end }}
{{- else if $lang }}
{{- with where $site.Sites "Language.Lang" "eq" $lang }}
{{- with index . 0 }}
{{- $transSite = . }}
{{- end }}
{{- end }}
{{- else }}
{{ $lang = $site.Language.Lang }}
{{ $transSite = $site }}
{{- end }}
{{- if $transSite }}
{{- $transPage = $transSite.GetPage $page.Path }}
{{- if $path }}
{{- with or
(and $searchLocal $searchPage $transPage ($transPage.GetPage $path))
(and $searchLocal $searchPage $transPage ($transPage.GetPage (strings.TrimRight "/" $path)))
(and $searchGlobal $searchPage ($transSite.GetPage $path))
(and $searchGlobal $searchPage ($transSite.GetPage (strings.TrimRight "/" $path)))
(and $searchLocal $searchResource $transPage ($transPage.Resources.Get $path))
(and $searchGlobal $searchResource (resources.Get $path))
}}
{{- $linkObject = . }}
{{- end }}
{{- else if $searchPage }}
{{- $linkObject = $transPage }}
{{- end }}
{{- end }}
{{- return $linkObject }}