fix(schema): resolve article author from data/authors

schema.html always read the author from .Site.Params.Author, so the
structured-data author was the site-level author (or empty) regardless of a
post's `authors` front matter — even though the theme supports multiple
authors via data/authors/.

Resolve the first `authors` key against data/authors/ and emit that author's
name, image and sameAs (from their social/links), falling back to the
site-level author. Single-author output is unchanged apart from the additive
image and sameAs fields.

Fixes #2943

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Chandler ThompsonandClaude Opus 4.8 committed 2026-06-06 20:58:27 -05:00
1 parent e9699d8c5d
commit f8cedfbcd8
1 file changed
+19 -1
+19 -1
View File
@@ -17,6 +17,22 @@
</script>
{{ else }}
{{- $iso8601 := "2006-01-02T15:04:05-07:00" -}}
{{- /* Resolve the author: first `authors` front matter key looked up in data/authors/, else the site author. */ -}}
{{- $author := .Site.Params.Author -}}
{{- with .Params.authors -}}
{{- with index site.Data.authors (index . 0 | lower) -}}
{{- $author = . -}}
{{- end -}}
{{- end -}}
{{- /* sameAs from social profiles: data/authors uses `social`, the site author uses `links` (each a {platform: url} map). */ -}}
{{- $sameAs := slice -}}
{{- range (or $author.social $author.links) -}}
{{- range $platform, $url := . -}}
{{- if not (strings.HasPrefix $url "mailto:") -}}
{{- $sameAs = $sameAs | append $url -}}
{{- end -}}
{{- end -}}
{{- end -}}
<script type="application/ld+json">
[{
"@context": "https://schema.org",
@@ -29,7 +45,9 @@
"url" : {{ .Permalink }},
"author" : {
"@type": "Person",
"name": "{{ .Site.Params.Author.name | safeJS }}"
"name": "{{ $author.name | safeJS }}"{{ with $author.image }},
"image": {{ . | absURL }}{{ end }}{{ if $sameAs }},
"sameAs": [{{ range $i, $u := $sameAs }}{{ if $i }}, {{ end }}{{ $u }}{{ end }}]{{ end }}
},
{{ with .PublishDate }}"copyrightYear": "{{ .Format "2006" }}",{{ end }}
{{ with .Date }}"dateCreated": "{{ .Format $iso8601 }}",{{ end }}