hackertours/layouts/_partials/head/extra.html
Stefan Bethke 89a0e7e353
All checks were successful
/ build (push) Successful in 1m1s
/ accessibility (push) Successful in 1m56s
Convert historic pages to new gallery shortcode
2026-10-17 10:22:34 +02:00

48 lines
2 KiB
HTML

{{- /*
Open Graph image for link previews. The theme's head/meta.html writes og:image only for the
"image" param; without it, this uses the first image in the page, a Markdown image or a
gallery-image shortcode, scaled down to at most 1200 pixels wide, with its alt text as
og:image:alt.
*/ -}}
{{- if not ($.Param "image") -}}
{{- /* Whichever comes first: a Markdown image or a gallery-image shortcode (src and alt in "…" or `…`). */ -}}
{{- with findRESubmatch `!\[([^\]]*)\]\(\s*<?([^\s)>]+)|\{\{<\s*gallery-image\s([^}]*)>\}\}` .RawContent 1 -}}
{{- $alt := index . 0 1 -}}
{{- $dest := index . 0 2 -}}
{{- with index . 0 3 -}}
{{- $dest = "" -}}
{{- $alt = "" -}}
{{- with findRESubmatch "\\bsrc=(?:\"([^\"]*)\"|`([^`]*)`)" . 1 }}{{ $dest = or (index . 0 1) (index . 0 2) }}{{ end -}}
{{- with findRESubmatch "\\balt=(?:\"([^\"]*)\"|`([^`]*)`)" . 1 }}{{ $alt = or (index . 0 1) (index . 0 2) }}{{ end -}}
{{- end -}}
{{- $url := "" -}}
{{- $width := 0 -}}
{{- $height := 0 -}}
{{- $resource := false -}}
{{- if findRE `^https?://` $dest -}}
{{- $url = $dest -}}
{{- else -}}
{{- $resource = or ($.Resources.Get (strings.TrimPrefix "./" $dest)) (resources.Get $dest) -}}
{{- end -}}
{{- with $resource -}}
{{- $image := . -}}
{{- if and (eq .ResourceType "image") (ne .MediaType.SubType "svg") -}}
{{- if gt .Width 1200 }}{{ $image = .Resize "1200x" }}{{ end -}}
{{- $width = $image.Width -}}
{{- $height = $image.Height -}}
{{- end -}}
{{- $url = $image.Permalink -}}
{{- end -}}
{{- with $url }}
<meta property="og:image" content="{{ . }}">
{{- with $width }}
<meta property="og:image:width" content="{{ . }}">
<meta property="og:image:height" content="{{ $height }}">
{{- end }}
{{- with $alt }}
<meta property="og:image:alt" content="{{ . }}">
{{- end }}
<meta name="twitter:card" content="summary_large_image">
{{- end -}}
{{- end -}}
{{- end -}}