From: Danilo M. Date: Sat, 18 Apr 2026 18:22:10 +0000 (+0200) Subject: feat: add Open Graph and Twitter Card meta tags for social sharing X-Git-Tag: release_22042026-1342~85 X-Git-Url: https://git.danix.xyz/?a=commitdiff_plain;h=d01eb91363ad385fa62125976441ea71ceeb43ba;p=danix.xyz-2.git feat: add Open Graph and Twitter Card meta tags for social sharing Implement comprehensive OG and Twitter Card support: - og:title, og:description, og:image, og:type (website/article) - og:article:published_time and og:article:author for article pages - twitter:card with summary_large_image, twitter:title, twitter:description, twitter:image - Per-page description from excerpt field with fallback to site description - Article-specific tags only rendered for pages with dates - Default dark thumbnail fallback when article has no image - Empty twitterHandle param (optional fill-in for users) Extracted head meta into new partial for maintainability. Co-Authored-By: Claude Haiku 4.5 --- diff --git a/hugo.toml b/hugo.toml index c20b617..ad31c86 100644 --- a/hugo.toml +++ b/hugo.toml @@ -109,6 +109,7 @@ enableRobotsTXT = true siteName = "danix.xyz" author = "Danilo Macrì" email = "danix@danix.xyz" + twitterHandle = "" # Theme options readingTime = true diff --git a/themes/danix-xyz-hacker/layouts/_default/baseof.html b/themes/danix-xyz-hacker/layouts/_default/baseof.html index 9370157..1f5dc97 100644 --- a/themes/danix-xyz-hacker/layouts/_default/baseof.html +++ b/themes/danix-xyz-hacker/layouts/_default/baseof.html @@ -3,11 +3,7 @@ - - - - - + {{ partial "head-meta.html" . }} {{ .Title }}{{ if ne .Title .Site.Title }} — {{ .Site.Title }}{{ end }} diff --git a/themes/danix-xyz-hacker/layouts/partials/head-meta.html b/themes/danix-xyz-hacker/layouts/partials/head-meta.html new file mode 100644 index 0000000..cd4e88c --- /dev/null +++ b/themes/danix-xyz-hacker/layouts/partials/head-meta.html @@ -0,0 +1,38 @@ +{{/* description: per-page excerpt wins over site-wide description */}} +{{ $description := .Site.Language.Params.siteDescription }} +{{ with .Params.excerpt }}{{ $description = . }}{{ end }} + +{{/* og:type: "article" only for single content pages that have a date */}} +{{ $ogType := "website" }} +{{ if and (eq .Kind "page") .Date }}{{ $ogType = "article" }}{{ end }} + +{{/* og:image: page image wins; fall back to default dark thumbnail */}} +{{ $ogImage := printf "%s%s" .Site.BaseURL "images/default_thumbnail_dark.png" }} +{{ with .Params.image }}{{ $ogImage = printf "%s%s" $.Site.BaseURL (strings.TrimLeft "/" .) }}{{ end }} + +{{/* author: page-level param wins; fall back to site param */}} +{{ $author := .Site.Params.author }} +{{ with .Params.author }}{{ $author = . }}{{ end }} + + + + + + + + + + + +{{ if eq $ogType "article" }} + + +{{ end }} + + + + + +{{ with .Site.Params.twitterHandle }} + +{{ end }}