{{ $scratch := newScratch }} {{ $baseURL := replaceRE `\/$` "" .Site.BaseURL }} {{ $scratch.Set "canonicalURL" (print $baseURL .RelPermalink) }} {{ if .Page.Params.canonical }} {{ $scratch.Set "canonicalURL" (print $baseURL .Page.Params.canonical) }} {{ else if .Page.Params.source }} {{ $productPriority := slice "/enterprise/" "/core/" "/cloud-dedicated/" "/clustered/" "/cloud-serverless/" "/v2/" "/cloud/" }} {{ range where (sort .Site.Pages "Section" "desc") "Params.source" "eq" .Page.Params.source }} {{ $pagePath := .RelPermalink }} {{ range $productPriority }} {{ if in $pagePath . }} {{ $scratch.Set "canonicalURL" (print $baseURL $pagePath) }} {{ end }} {{ end }} {{ end }} {{ end }} {{ $canonicalURL := $scratch.Get "canonicalURL" }}