diff --git a/.prettierignore b/.prettierignore
index b243ca55..c128736f 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -32,7 +32,6 @@ layouts/partials/article-link/card-related.html
layouts/partials/article-link/card.html
layouts/partials/article-link/simple.html
layouts/partials/hero/background.html
-layouts/partials/head.html
layouts/shortcodes/screenshot.html
layouts/shortcodes/figure.html
diff --git a/layouts/partials/head.html b/layouts/partials/head.html
index 424f8c98..67e9ad9b 100644
--- a/layouts/partials/head.html
+++ b/layouts/partials/head.html
@@ -1,152 +1,193 @@
-
+
{{ with .Site.Language.Params.htmlCode | default .Site.LanguageCode }}
-
+
{{ end }}
-
-
+
+
+
+
{{/* Title */}}
{{ if .IsHome -}}
- {{ .Site.Title | emojify }}
-
+ {{ .Site.Title | emojify }}
+
{{- else -}}
- {{ .Title | emojify }} · {{ .Site.Title | emojify }}
-
+ {{ .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 }}
+ {{ 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" }}
+ {{ $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) }}
+ {{ $assets.Add "css" (slice $cssCustom) }}
{{ end }}
{{ $bundleCSS := $assets.Get "css" | resources.Concat "css/main.bundle.css" | resources.Minify | resources.Fingerprint
- (.Site.Params.fingerprintAlgorithm | default "sha512") }}
-
+ (.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) }}
+ {{ $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) }}
+ {{ $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) }}
+ {{ $jsRTL := resources.Get "js/rtl.js" }}
+ {{ $assets.Add "js" (slice $jsRTL) }}
{{ end }}
{{ $jsMobileMenu := resources.Get "js/mobilemenu.js" }}
{{ $assets.Add "js" (slice $jsMobileMenu) }}
{{ if $assets.Get "js" }}
- {{ $bundleJS := $assets.Get "js" | resources.Concat "js/main.bundle.js" | resources.Minify | resources.Fingerprint
- (.Site.Params.fingerprintAlgorithm | default "sha512") }}
-
+ {{ $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") }}
-
+ {{ $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 }}
+ {{ 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 */ -}}
- {{ if not ($.Resources.GetMatch "*feature*") }}
- {{ with .Site.Params.defaultSocialImage }}
-
-
- {{ end }}
- {{ end }}
+ {{- $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 }}
+
+ {{ end }}
{{ with .Site.Params.Author.links }}
- {{ range $links := . }}
- {{ range $name, $url := $links }}
- {{ if not (strings.HasPrefix $url "mailto:") }}
- {{ end }}
- {{ end }}
- {{ end }}
+ {{ 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 }}
+ {{ partialCached "extend-head.html" .Site }}
{{ end }}
- {{/* Uncached extend head - e.g. {{ with .Page.HasShortcode "gallery" }} do something {{ end }} */}}
+
+ {{/* Uncached extend head - Example: https://gohugo.io/methods/page/hasshortcode/ */}}
{{ if templates.Exists "partials/extend-head-uncached.html" }}
- {{ partial "extend-head-uncached.html" . }}
+ {{ partial "extend-head-uncached.html" . }}
{{ end }}
-
+
{{/* Firebase */}}
{{ with $.Site.Params.firebase }}
- {{ if isset $.Site.Params "firebase" }}
-
-
-
+ {{ if isset $.Site.Params "firebase" }}
+
+
+
- {{ end }}
+ {{ end }}
{{ end }}
{{/* Advertisement */}}
{{ with .Site.Params.advertisement.adsense }}
-
+
{{ end }}