* fix(og-image): handle leading slashes in image paths for subpath deployments Fix Open Graph image paths not working correctly when deploying to subpaths (e.g., https://example.com/docs/). The issue occurred when image paths with leading slashes were specified in configuration, causing the subpath to be ignored. The fix follows the established pattern used throughout the theme by stripping leading slashes before applying relURL, ensuring paths respect the baseURL subpath configuration. - Update opengraph.html to process image paths consistently - Update configuration examples to remove leading slashes - Add investigation document explaining the issue and fix * chore: remove issue summary
97 lines
2.7 KiB
HTML
97 lines
2.7 KiB
HTML
{{/* Adapted from https://github.com/gohugoio/hugo/blob/v0.149.0/docs/layouts/_partials/opengraph/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 }}">
|
|
|
|
{{- with $.Params.images -}}
|
|
{{- range first 6 . }}
|
|
{{- with $.Resources.GetMatch . }}
|
|
<!-- If the string matches a page resource, use that -->
|
|
<meta property="og:image" content="{{ .Permalink }}">
|
|
{{- else }}
|
|
<!-- Otherwise treat it as a site/global path -->
|
|
{{- $image := . -}}
|
|
{{- if hasPrefix $image "/" -}}
|
|
{{- $image = relURL (strings.TrimPrefix "/" $image) -}}
|
|
{{- end -}}
|
|
<meta property="og:image" content="{{ $image | absURL }}">
|
|
{{- end }}
|
|
{{- end }}
|
|
{{- else -}}
|
|
{{- with $.Site.Params.images }}
|
|
{{- $image := index . 0 -}}
|
|
{{- if hasPrefix $image "/" -}}
|
|
{{- $image = relURL (strings.TrimPrefix "/" $image) -}}
|
|
{{- end -}}
|
|
<meta property="og:image" content="{{ $image | absURL }}">
|
|
{{- end }}
|
|
{{- end -}}
|
|
|
|
|
|
{{- 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 }}
|
|
{{ 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 }}
|
|
|
|
{{- /* Facebook Page Admin ID for Domain Insights */}}
|
|
{{- with site.Params.social.facebook_admin }}
|
|
<meta property="fb:admins" content="{{ . }}">
|
|
{{ end }}
|