aboutsummaryrefslogtreecommitdiff
path: root/layouts
diff options
context:
space:
mode:
authormiraikumiko <miraikumiko@disroot.org>2025-05-03 20:08:38 +0200
committermiraikumiko <miraikumiko@disroot.org>2025-05-03 20:08:38 +0200
commitfb01daeb1e92fd81eb3b55b74a25d5bb9686352b (patch)
tree1cf638f9f869e8c13da3f5ea81f33995a98f1a2b /layouts
parentb4a60a014d09c7b6c64eef4a4f44502fd78307cd (diff)
downloadhugo-bearcub-main.tar.gz
hugo-bearcub-main.tar.bz2
Fix social cardHEADmain
Diffstat (limited to 'layouts')
-rw-r--r--layouts/partials/seo_tags.html13
-rw-r--r--layouts/partials/social_card.html55
2 files changed, 68 insertions, 0 deletions
diff --git a/layouts/partials/seo_tags.html b/layouts/partials/seo_tags.html
index 058b788..07829fd 100644
--- a/layouts/partials/seo_tags.html
+++ b/layouts/partials/seo_tags.html
@@ -4,6 +4,19 @@
<meta name="author" content="{{ .Site.Params.Author.name }}" />
<meta name="keywords" content="{{ if .IsPage}}{{ range $index, $tag := .Params.tags }}{{ $tag }},{{ end }}{{ else }}{{ range $plural, $terms := .Site.Taxonomies }}{{ range $term, $val := $terms }}{{ printf "%s," $term }}{{ end }}{{ end }}{{ end }}" />
+<!-- Only generate social card if: -->
+<!-- - generateSocialCard = true -->
+<!-- - there aren't images set in frontmatter -->
+<!-- - page is of .Kind "page" -->
{{ if and (and (default false .Site.Params.generateSocialCard) (not (isset .Params "images"))) (eq .Kind "page") }}
{{ partial "social_card.html" . }}
+{{ else }}
+ <!-- Open Graph / Facebook -->
+ {{ template "_internal/opengraph.html" . }}
+
+ <!-- Twitter -->
+ {{ template "_internal/twitter_cards.html" . }}
+
+ <!-- Microdata -->
+ {{ template "_internal/schema.html" . }}
{{ end }}
diff --git a/layouts/partials/social_card.html b/layouts/partials/social_card.html
index 61914ef..74b5a81 100644
--- a/layouts/partials/social_card.html
+++ b/layouts/partials/social_card.html
@@ -39,13 +39,68 @@
{{ $card := $bg.Filter (images.Overlay $fg 112 140 ) }}
{{ $card := $card.Resize "900x webp q100" }}
+<!-- Open Graph / Facebook -->
+<!-- Source: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/opengraph.html -->
+<meta property="og:title" content="{{ .Title }}" />
+<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" />
+<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}" />
+{{ $card := $card.Resize "900x webp q100" }}
+
+<!-- Open Graph / Facebook -->
+<!-- Source: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/opengraph.html -->
+<meta property="og:title" content="{{ .Title }}" />
+<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}" />
+<meta property="og:type" content="{{ if .IsPage }}article{{ else }}website{{ end }}" />
+<meta property="og:url" content="{{ .Permalink }}" />
+
+<meta property="og:image" content="{{ $card.Permalink | absURL }}"/>
+
+{{- if .IsPage }}
+{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
+<meta property="article:section" content="{{ .Section }}" />
+{{ with .PublishDate }}<meta property="article:published_time" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }}
+{{ with .Lastmod }}<meta property="article:modified_time" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end }}
+{{- end -}}
+
+{{- with .Params.audio }}<meta property="og:audio" content="{{ . }}" />{{ end }}
+{{- with .Params.locale }}<meta property="og:locale" content="{{ . }}" />{{ end }}
+{{- with .Site.Params.title }}<meta property="og:site_name" content="{{ . }}" />{{ end }}
+{{- with .Params.videos }}{{- range . }}
+<meta property="og:video" content="{{ . | absURL }}" />
+{{ end }}{{ end }}
+
+{{- /* If it is part of a series, link to related articles */}}
+{{- $permalink := .Permalink }}
+{{- $siteSeries := .Site.Taxonomies.series }}
+{{- if $siteSeries }}
+{{ with .Params.series }}{{- range $name := . }}
+ {{- $series := index $siteSeries ($name | urlize) }}
+ {{- range $page := first 6 $series.Pages }}
+ {{- if ne $page.Permalink $permalink }}<meta property="og:see_also" content="{{ $page.Permalink }}" />{{ end }}
+ {{- end }}
+{{ end }}{{ end }}
+{{- end }}
+
+<!-- Twitter -->
+<!-- Source: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/twitter_cards.html -->
+<meta name="twitter:card" content="summary_large_image"/>
+<meta name="twitter:image" content="{{ $card.Permalink | absURL }}"/>
+<meta name="twitter:title" content="{{ .Title }}"/>
+<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end -}}"/>
+
+<!-- Microdata -->
+<!-- Source: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/schema.html -->
<meta itemprop="name" content="{{ .Title }}">
<meta itemprop="description" content="{{ with .Description }}{{ . }}{{ else }}{{if .IsPage}}{{ .Summary }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}{{ end }}">
+
{{- if .IsPage -}}
{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
{{ with .PublishDate }}<meta itemprop="datePublished" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end}}
{{ with .Lastmod }}<meta itemprop="dateModified" {{ .Format $iso8601 | printf "content=%q" | safeHTMLAttr }} />{{ end}}
<meta itemprop="wordCount" content="{{ .WordCount }}">
+
<meta itemprop="image" content="{{ $card.Permalink | absURL }}"/>
+
+<!-- Output all taxonomies as schema.org keywords -->
<meta itemprop="keywords" content="{{ if .IsPage}}{{ range $index, $tag := .Params.tags }}{{ $tag }},{{ end }}{{ else }}{{ range $plural, $terms := .Site.Taxonomies }}{{ range $term, $val := $terms }}{{ printf "%s," $term }}{{ end }}{{ end }}{{ end }}" />
{{- end -}}