From c6498a4bfbc82474e485c456ae3d414d54f4e9f7 Mon Sep 17 00:00:00 2001 From: Alan Orth Date: Fri, 4 Dec 2020 14:06:47 +0200 Subject: [PATCH] layouts/partials: Override internal templates for page bundles The Hugo internal Twitter and OpenGraph templates assume your post images are in the static directory. This tries to look them up in the page bundle first and falls back to the Hugo default behavior. --- layouts/partials/head-meta.html | 4 +- layouts/partials/opengraph.html | 73 +++++++++++++++++++++++++++++ layouts/partials/twitter_cards.html | 42 +++++++++++++++++ 3 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 layouts/partials/opengraph.html create mode 100644 layouts/partials/twitter_cards.html diff --git a/layouts/partials/head-meta.html b/layouts/partials/head-meta.html index 05cced6..37d500f 100644 --- a/layouts/partials/head-meta.html +++ b/layouts/partials/head-meta.html @@ -1,8 +1,8 @@ -{{ template "_internal/opengraph.html" . }} -{{ template "_internal/twitter_cards.html" . }} +{{ partial "opengraph.html" . }} +{{ partial "twitter_cards.html" . }} {{- with .Site.Params.google_verify_meta -}} diff --git a/layouts/partials/opengraph.html b/layouts/partials/opengraph.html new file mode 100644 index 0000000..7b7ed98 --- /dev/null +++ b/layouts/partials/opengraph.html @@ -0,0 +1,73 @@ + + + + + +{{ with $.Params.images }}{{ range first 6 . -}} +{{/* try to get the image from the page bundle */}} +{{- with $.Page.Resources.GetMatch (printf "*%s*" .) -}} + +{{/* otherwise, get the image from /static */}} +{{- else -}} + +{{- end }} +{{ end }}{{ else -}} +{{- $images := $.Resources.ByType "image" -}} +{{- $featured := $images.GetMatch "*feature*" -}} +{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}} +{{- with $featured -}} + +{{ else -}} +{{- with $.Site.Params.images -}} + +{{ end }}{{ end }}{{ end }} + +{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}} +{{- if .IsPage }} +{{- if not .PublishDate.IsZero }} +{{ else if not .Date.IsZero }} +{{ end }} +{{- if not .Lastmod.IsZero }}{{ end }} +{{- else }} +{{- if not .Date.IsZero }} +{{- end }} +{{- end }}{{/* .IsPage */}} + +{{- with .Params.audio }}{{ end }} +{{- with .Params.locale }}{{ end }} +{{- with .Site.Params.title }}{{ end }} +{{- with .Params.videos }} +{{- range . }} + +{{ end }}{{ end }} + +{{- /* If it is part of a series, link to related articles */}} +{{- $permalink := .Permalink }} +{{- $siteSeries := .Site.Taxonomies.series }}{{ with .Params.series }} +{{- range $name := . }} + {{- $series := index $siteSeries $name }} + {{- range $page := first 6 $series.Pages }} + {{- if ne $page.Permalink $permalink }}{{ end }} + {{- end }} +{{ end }}{{ end }} + +{{- if .IsPage }} +{{- range .Site.Authors }}{{ with .Social.facebook }} +{{ end }}{{ with .Site.Social.facebook }} +{{ end }} + +{{- with .Params.tags }}{{ range first 6 . }} +{{ end }}{{ end }} +{{- end }}{{ end }} + +{{- /* Facebook Page Admin ID for Domain Insights */}} +{{- with .Site.Social.facebook_admin }}{{ end }} + + diff --git a/layouts/partials/twitter_cards.html b/layouts/partials/twitter_cards.html new file mode 100644 index 0000000..0f90bd1 --- /dev/null +++ b/layouts/partials/twitter_cards.html @@ -0,0 +1,42 @@ + +{{- with $.Params.images -}} + +{{/* try to get the image from the page bundle */}} +{{- with $.Page.Resources.GetMatch (printf "*%s*" .) -}} + +{{- else -}} + +{{- end -}} +{{ else -}} +{{- $images := $.Resources.ByType "image" -}} +{{- $featured := $images.GetMatch "*feature*" -}} +{{- if not $featured }}{{ $featured = $images.GetMatch "{*cover*,*thumbnail*}" }}{{ end -}} +{{- with $featured -}} + + +{{- else -}} +{{- with $.Site.Params.images -}} + + +{{ else -}} + +{{- end -}} +{{- end -}} +{{- end }} + + +{{ with .Site.Social.twitter -}} + +{{ end -}} +{{ range .Site.Authors }} +{{ with .twitter -}} + +{{ end -}} +{{ end -}}