{{ $scr := .Scratch }}
{{/* EXTENSIBILITY HOOK: HEAD-START */}} {{ partial "functions/get_hook" (dict "hook" "head-start" "context" .) }} {{ if .Params.private }} {{- end -}} {{/* Attempt to load superuser. */}} {{ $superuser_name := "" }} {{ $superuser_username := "" }} {{ $superuser_role := "" }} {{ range first 1 (where (where site.Pages "Section" "authors") "Params.superuser" true) }} {{ $superuser_name = .Title }} {{ $superuser_username = path.Base .File.Dir }} {{ $superuser_role = .Params.role }} {{ end }} {{ $scr.Set "superuser_username" $superuser_username }}{{/* Set superuser globally for page_author.html. */}} {{ with $superuser_name }}{{ end }} {{/* Generate page description. */}} {{ $desc := "" }} {{ if .Params.summary }} {{ $desc = .Params.summary }} {{ else if .Params.abstract }} {{ $desc = .Params.abstract }} {{ else if .IsPage }} {{ $desc = .Summary }} {{ else if site.Params.marketing.seo.description }} {{ $desc = site.Params.marketing.seo.description }} {{ else }} {{ $desc = $superuser_role }} {{ end }} {{ range .Translations }} {{ end }} {{/* Hugo Blox Color Theme Initialization */}} {{ $theme_name := (lower site.Params.appearance.color) | default "blue" }} {{ $theme_path := printf "css/themes/%s.css" $theme_name }} {{ if not (fileExists (printf "assets/%s" $theme_path)) }} {{ errorf "The specified color theme `%s.css` was not found in `assets/css/themes/`. Either install your custom color theme in the folder or set the `color` theme value in `params.yaml` to an existing theme such as `blue`." $theme_name }} {{ else }} {{ $theme_css := resources.Get $theme_path | minify }} {{ end }} {{/* Style */}} {{ if ne (os.Getenv "HUGO_BLOX_POSTCSS") "true" }} {{ $styles := resources.Get "dist/wc.min.css" | fingerprint "sha256" }} {{ else }} {{ $options := dict "inlineImports" true }} {{ $styles := resources.Get "css/styles.css" }} {{ $styles = $styles | resources.PostCSS $options }} {{ if hugo.IsProduction }} {{ $styles = $styles | minify | fingerprint "sha256" | resources.PostProcess }} {{ end }} {{ end }} {{/* Load community blox styles */}} {{ $hb_community_styles := resources.Match "dist/community/blox/**.css" }} {{ with $hb_community_styles }} {{ $hb_community_styles = $hb_community_styles | resources.Concat "css/community-hugo-blox.css" }} {{- if hugo.IsProduction -}} {{- $hb_community_styles = $hb_community_styles | minify | fingerprint "sha256" -}} {{- end -}} {{ end }} {{ if fileExists "assets/css/custom.css" }} {{ $styles := resources.Get "css/custom.css" | minify | fingerprint "sha256" }} {{ end }} {{/* Analytics & Verification */}} {{/* !CACHED! All analytics and verification code is at site level */}} {{ partialCached "blox-analytics/index" . }} {{/* RSS Feed */}} {{ with .OutputFormats.Get "RSS" }} {{ end }} {{/* Progressive Web App (PWA) Icon */}} {{/* Get page image for sharing. */}} {{ $sharing_image := resources.GetMatch (path.Join "media" "sharing.*") }} {{ $featured_image := (.Resources.ByType "image").GetMatch "*featured*" }} {{ $avatar_image := (.Resources.ByType "image").GetMatch "avatar*" }} {{ $has_logo := fileExists "assets/media/logo.png" | or (fileExists "assets/media/logo.svg") }} {{ $og_image := "" }} {{ $twitter_card := "summary_large_image" }} {{ if (and (eq .Kind "term") $avatar_image) }} {{/* Match image processing in About widget to prevent generating more images than necessary. */}} {{ $og_image = ($avatar_image.Fill "270x270 Center").Permalink }} {{ $twitter_card = "summary" }} {{ else if $featured_image }} {{ $og_image = $featured_image.Permalink }} {{ else if $sharing_image }} {{ $og_image = $sharing_image.Permalink }} {{ else if $has_logo }} {{/* !CACHED! Can safely cache this site logo variant */}} {{ $og_image = (partialCached "functions/get_logo" (dict "constraint" "fit" "size" 300)).Permalink }} {{ $twitter_card = "summary" }} {{ else }} {{ $og_image = (partial "functions/get_site_icon" 512).Permalink }} {{ $twitter_card = "summary" }} {{ end }} {{ $scr.Set "og_image" $og_image }}{{/* Set `og_image` globally for `rss.xml`. */}} {{ $title := "" }} {{ with .Params.seo.title }} {{ $title = replace . "{brand}" site.Title }} {{ else }} {{ $title = .Title | default site.Title }} {{ if ne $title site.Title }}{{ $title = printf "%s | %s" $title site.Title }}{{ end }} {{ end }} {{ with site.Params.marketing.seo.twitter }} {{ end }} {{- with $og_image -}} {{- end -}} {{ if .IsPage }} {{ if not .PublishDate.IsZero }} {{ else if not .Date.IsZero }} {{ end }} {{ if not .Lastmod.IsZero }}{{ end }} {{ else }} {{ if not .Date.IsZero }} {{ end }} {{ end }} {{ partial "jsonld/main" (dict "page" . "summary" $desc) }}