{{ 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 }} {{/* 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 }} {{/* Social */}} {{ template "_internal/opengraph.html" . }} {{ template "_internal/twitter_cards.html" . }} {{/* Use defaultSocialImage if feature image does not exist */}} {{ $featureImage := "" }} {{ $pageImages := .Resources.ByType "image" }} {{ range slice "*featured*" "*cover*" "*thumbnail*" }} {{ if not $featureImage }} {{ $featureImage = $pageImages.GetMatch . }} {{ end }} {{ end }} {{ if not $featureImage }} {{ with .Site.Params.defaultSocialImage }} {{ $socialImage := "" }} {{ if or (strings.HasPrefix . "http:") (strings.HasPrefix . "https:") }} {{ $socialImage = resources.GetRemote . }} {{ else }} {{ $socialImage = resources.Get . }} {{ end }} {{ with $socialImage }} {{ end }} {{ end }} {{ 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 }} {{ $alg := .Site.Params.fingerprintAlgorithm | default "sha512" }} {{/* CSS */}} {{ $cssResources := slice }} {{ $schemeName := .Site.Params.colorScheme | default "blowfish" }} {{ $cssScheme := resources.Get (printf "css/schemes/%s.css" (lower $schemeName)) | default (resources.Get "css/schemes/blowfish.css") }} {{ $cssResources = $cssResources | append $cssScheme }} {{ $cssResources = $cssResources | append (resources.Get "css/compiled/main.css") }} {{ with resources.Get "css/custom.css" }} {{ $cssResources = $cssResources | append . }} {{ end }} {{ if not .Site.Params.disableImageZoom | default true }} {{ $cssResources = $cssResources | append (resources.Get "lib/zoom/style.css") }} {{ end }} {{ $bundleCSS := $cssResources | resources.Concat "css/main.bundle.css" | resources.Minify | resources.Fingerprint $alg }} {{/* JS loaded immediately */}} {{ $jsAppearance := resources.Get "js/appearance.js" | resources.ExecuteAsTemplate "js/appearance.js" . | resources.Minify | resources.Fingerprint $alg }} {{ $enableA11y := .Site.Params.enableA11y | default false }} {{ if $enableA11y }} {{ $jsA11y := resources.Get "js/a11y.js" | resources.Minify | resources.Fingerprint $alg }} {{ end }} {{ $showZenMode := .Params.showZenMode | default (.Site.Params.article.showZenMode | default false) }} {{ $shouldIncludeZenMode := or $enableA11y $showZenMode }} {{ if and .IsPage $shouldIncludeZenMode }} {{ $jsZenMode := resources.Get "js/zen-mode.js" | resources.Minify | resources.Fingerprint $alg }} {{ end }} {{ if not .Site.Params.disableImageZoom | default true }} {{ $zoomJS := resources.Get "lib/zoom/zoom.min.umd.js" | resources.Fingerprint $alg }} {{ end }} {{/* JS deferred */}} {{ $jsResources := slice }} {{ if site.Params.footer.showScrollToTop | default true }} {{ $jsResources = $jsResources | append (resources.Get "js/scroll-to-top.js") }} {{ end }} {{ if .Site.Params.enableSearch | default false }} {{ $jsResources = $jsResources | append (resources.Get "lib/fuse/fuse.min.js") | append (resources.Get "js/search.js") }} {{ end }} {{ if .Site.Params.enableCodeCopy | default false }} {{ $jsResources = $jsResources | append (resources.Get "js/code.js") }} {{ end }} {{ if .Site.Params.rtl | default false }} {{ $jsResources = $jsResources | append (resources.Get "js/rtl.js") }} {{ end }} {{ $jsResources = $jsResources | append (resources.Get "js/mobilemenu.js") }} {{ $jsResources = $jsResources | append (resources.Get "js/button-likes.js") }} {{ $jsResources = $jsResources | append (resources.Get "js/katex-render.js") }} {{ if $jsResources }} {{ $bundleJS := $jsResources | resources.Concat "js/main.bundle.js" | resources.Minify | resources.Fingerprint $alg }} {{ end }} {{/* Conditional loaded resources */}} {{ partial "vendor.html" . }} {{/* Icons */}} {{ if templates.Exists "partials/favicons.html" }} {{ partialCached "favicons.html" .Site }} {{ else }} {{ end }} {{/* Schema */}} {{ partial "schema.html" . }} {{/* Analytics */}} {{ if hugo.IsProduction }} {{ partial "analytics/main.html" . }} {{ end }} {{/* 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 }}