{{ with .Site.Language.Params.htmlCode | default .Site.LanguageCode }} {{ end }} {{/* Title */}} {{ if .IsHome -}} {{ .Site.Title | emojify }} {{- else -}} {{ .Title | emojify }} · {{ .Site.Title | emojify }} {{- end }} {{/* Metadata */}} {{ with (.Params.Summary | default .Params.Description) | default .Site.Params.description -}} {{- end }} {{ with .Params.Tags | default .Site.Params.keywords -}} {{- end }} {{ with .Site.Params.robots }} {{ end }} {{ with .Params.robots }} {{ end }} {{ range .AlternativeOutputFormats -}} {{ printf ` ` .Rel .MediaType.Type .RelPermalink ($.Site.Title | emojify) | safeHTML }} {{ end -}} {{/* Asset bundles */}} {{ $assets := newScratch }} {{ $cssScheme := resources.Get (printf "css/schemes/%s.css" (.Site.Params.colorScheme | default "blowfish")) }} {{ if not $cssScheme }} {{ $cssScheme = resources.Get "css/schemes/blowfish.css" }} {{ end }} {{ $assets.Add "css" (slice $cssScheme) }} {{ $cssMain := resources.Get "css/compiled/main.css" }} {{ $assets.Add "css" (slice $cssMain) }} {{ $cssCustom := resources.Get "css/custom.css" }} {{ if $cssCustom }} {{ $assets.Add "css" (slice $cssCustom) }} {{ end }} {{ $images := slice }} {{ $backgroundAndFeaturedImages := slice }} {{ range .Site.Pages }} {{ $images = $images | append (.Page.Resources.ByType "image") }} {{ if .Params.featureimage }} {{ $backgroundAndFeaturedImages = $backgroundAndFeaturedImages | append (resources.GetRemote .Params.featureimage) }} {{ end }} {{ end }} {{ $backgroundAndFeaturedImages = $backgroundAndFeaturedImages | append ($images.Match "{*background*,*feature*,*cover*,*thumbnail*}") }} {{ $siteParams := slice .Site.Params.defaultFeaturedImage .Site.Params.defaultBackgroundImage }} {{ range $siteParams }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ $backgroundAndFeaturedImages = $backgroundAndFeaturedImages | append (resources.GetRemote .) }} {{ else }} {{ $backgroundAndFeaturedImages = $backgroundAndFeaturedImages | append (resources.Get .) }} {{ end }} {{ end }} {{ $disableImageOptimization := .Page.Site.Params.disableImageOptimization | default false }} {{ range $backgroundAndFeaturedImages }} {{ $classImages := slice }} {{ if or $disableImageOptimization (strings.HasSuffix .Name ".svg") }} {{ $classImages = $classImages | append . }} {{ else }} {{ $classImages = $classImages | append (.Resize "600x") }} {{ $classImages = $classImages | append (.Resize (print ($.Site.Params.backgroundImageWidth | default "1200") "x")) }} {{ end }} {{ range $classImages }} {{ $className := printf "background-image-%s" (md5 .RelPermalink) }} {{ $cssBackgroundImage := printf ".%s { background-image: url(\"%s\"); }" $className .RelPermalink }} {{ $cssBackgroundImage = $cssBackgroundImage | resources.FromString "css/background-image.css" }} {{ $assets.Add "css" (slice $cssBackgroundImage) }} {{ end }} {{ end }} {{ $repoShortcodeExists := false }} {{ range .Site.Pages }} {{ if or (.Page.HasShortcode "codeberg") (.Page.HasShortcode "forgejo") (.Page.HasShortcode "gitea") (.Page.HasShortcode "github") }} {{ $repoShortcodeExists = true }} {{ end }} {{ end }} {{ if $repoShortcodeExists }} {{ $colorsRepos := .Site.Data.colorsRepos }} {{ range $language, $color := $colorsRepos }} {{ if not $color }} {{ $color = "" }} {{ end }} {{ $className := printf "color-repo-%s" (md5 $language) }} {{ $cssColorRepos := printf ".%s { background-color: %s; }" $className $color }} {{ $cssColorRepos = $cssColorRepos | resources.FromString "css/color-repo.css" }} {{ $assets.Add "css" (slice $cssColorRepos) }} {{ end }} {{ $color := "#0077b6" }} {{ $className := "color-repo-fallback" }} {{ $cssColorRepos := printf ".%s { background-color: %s; }" $className $color }} {{ $cssColorRepos = $cssColorRepos | resources.FromString "css/color-repo.css" }} {{ $assets.Add "css" (slice $cssColorRepos) }} {{ end }} {{ $bundleCSS := $assets.Get "css" | resources.Concat "css/main.bundle.css" | resources.Minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }} {{ $jsAppearance := resources.Get "js/appearance.js" }} {{ $jsAppearance = $jsAppearance | resources.ExecuteAsTemplate "js/appearance.js" . | resources.Minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }} {{ if .Site.Params.enableSearch | default false }} {{ $jsFuse := resources.Get "lib/fuse/fuse.min.js" }} {{ $jsSearch := resources.Get "js/search.js" }} {{ $assets.Add "js" (slice $jsFuse $jsSearch) }} {{ end }} {{ if .Site.Params.enableCodeCopy | default false }} {{ $jsCode := resources.Get "js/code.js" }} {{ $assets.Add "js" (slice $jsCode) }} {{ end }} {{ if .Site.Params.rtl | default false }} {{ $jsRTL := resources.Get "js/rtl.js" }} {{ $assets.Add "js" (slice $jsRTL) }} {{ end }} {{ $jsMobileMenu := resources.Get "js/mobilemenu.js" }} {{ $assets.Add "js" (slice $jsMobileMenu) }} {{ $buttonLikes := resources.Get "js/button-likes.js" }} {{ $assets.Add "js" (slice $buttonLikes) }} {{ $katexRender := resources.Get "js/katex-render.js" }} {{ $assets.Add "js" (slice $katexRender) }} {{ if $assets.Get "js" }} {{ $bundleJS := $assets.Get "js" | resources.Concat "js/main.bundle.js" | resources.Minify | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }} {{ end }} {{ if not .Site.Params.disableImageZoom | default true }} {{ $zoomJS := resources.Get "lib/zoom/zoom.min.js" | resources.Fingerprint (.Site.Params.fingerprintAlgorithm | default "sha512") }} {{ end }} {{/* Icons */}} {{ if templates.Exists "partials/favicons.html" }} {{ partialCached "favicons.html" .Site }} {{ else }} {{ end }} {{/* Site Verification */}} {{ with .Site.Params.verification.google }} {{ end }} {{ with .Site.Params.verification.bing }} {{ end }} {{ with .Site.Params.verification.pinterest }} {{ end }} {{ with .Site.Params.verification.yandex }} {{ end }} {{ with .Site.Params.verification.fediverse }} {{ end }} {{/* Social */}} {{ template "_internal/opengraph.html" . }} {{ template "_internal/twitter_cards.html" . }} {{- /* Main page always uses this; fallback elsewhere if no feature image */ -}} {{- /* See https://gohugo.io/templates/embedded/#open-graph */ -}} {{- $images := .Resources.ByType "image" -}} {{- $socialImage := $images.GetMatch "*feature*" -}} {{- if not $socialImage -}} {{- with .Site.Params.defaultSocialImage -}} {{- if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") -}} {{- $socialImage = resources.GetRemote . -}} {{- else -}} {{- $socialImage = resources.Get . -}} {{- end -}} {{- end -}} {{- end -}} {{- with $socialImage -}} {{- end -}} {{/* Schema */}} {{ partial "schema.html" . }} {{/* Me */}} {{ with .Site.Params.Author.name }} {{ end }} {{ with .Site.Params.Author.links }} {{ range $links := . }} {{ range $name, $url := $links }} {{ if not (strings.HasPrefix $url "mailto:") }} {{ end }} {{ end }} {{ end }} {{ end }} {{/* Vendor */}} {{ partial "vendor.html" . }} {{/* Analytics */}} {{ partial "analytics/main.html" .Site }} {{/* Extend head - eg. for custom analytics scripts, etc. */}} {{ if templates.Exists "partials/extend-head.html" }} {{ partialCached "extend-head.html" .Site }} {{ end }} {{/* Uncached extend head - Example: https://gohugo.io/methods/page/hasshortcode/ */}} {{ if templates.Exists "partials/extend-head-uncached.html" }} {{ partial "extend-head-uncached.html" . }} {{ end }} {{/* Firebase */}} {{ with $.Site.Params.firebase }} {{ if isset $.Site.Params "firebase" }} {{ end }} {{ end }} {{/* Advertisement */}} {{ with .Site.Params.advertisement.adsense }} {{ end }}