{{- /* 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*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") -}} {{- /* Turned as its EXIF orientation says; Hugo doesn't do that when it resizes. */ -}} {{- $image = .Filter images.AutoOrient -}} {{- if gt $image.Width 1200 }}{{ $image = $image.Resize "1200x" }}{{ end -}} {{- $width = $image.Width -}} {{- $height = $image.Height -}} {{- end -}} {{- $url = $image.Permalink -}} {{- end -}} {{- with $url }} {{- with $width }} {{- end }} {{- with $alt }} {{- end }} {{- end -}} {{- end -}} {{- end -}}