Add og:image from the first image in a page; fix Hansaplatz post image
Some checks failed
/ build (push) Successful in 22s
/ accessibility (push) Failing after 23s

This commit is contained in:
Stefan Bethke 2026-10-17 10:09:00 +02:00
commit fd01d9d124
3 changed files with 40 additions and 0 deletions

View file

Before

Width:  |  Height:  |  Size: 3.8 MiB

After

Width:  |  Height:  |  Size: 3.8 MiB

Before After
Before After

View file

@ -0,0 +1,40 @@
{{- /*
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's Markdown, scaled down to at
most 1200 pixels wide, with its alt text as og:image:alt.
*/ -}}
{{- if not ($.Param "image") -}}
{{- with findRESubmatch `!\[([^\]]*)\]\(\s*<?([^\s)>]+)` .RawContent 1 -}}
{{- $alt := index . 0 1 -}}
{{- $dest := index . 0 2 -}}
{{- $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 -}}