From 45adb2af270bd5134938559b2e33357a5ee38403 Mon Sep 17 00:00:00 2001 From: Will Faught Date: Tue, 28 May 2024 23:34:04 -0700 Subject: [PATCH] Convert authors to taxonomies --- README.md | 30 +++++++-------------- exampleSite/hugo.toml | 6 ----- layouts/_default/list.atom.xml | 6 ++--- layouts/_default/list.rss.xml | 8 +++--- layouts/partials/paige/authors.html | 39 ++++------------------------ layouts/partials/paige/metadata.html | 10 +------ layouts/partials/paige/metas.html | 2 +- layouts/partials/paige/page.html | 10 +------ 8 files changed, 25 insertions(+), 86 deletions(-) diff --git a/README.md b/README.md index 8abe02d8..a11fc6ff 100644 --- a/README.md +++ b/README.md @@ -304,30 +304,11 @@ The assigned values shown are the default values. The parameter object is accessed in site parameters as `[params.paige]`, and in page parameters as `[paige]`. -Optional site parameters: +Parameters specific to pages: ```toml -[authors.will-faught] -default = false # Credit this author in pages that have no authors parameter -email = "will.faught@example.com" -name = "Will Faught" -url = "https://willfaught.com/paige" -``` - -Optional page parameters: - -```toml -authors = ["will-faught"] # Credit the corresponding author in the site parameters link = "https://youtu.be/dQw4w9WgXcQ" # The reference for an anchor around the title -[[authors]] -author = "will-faught" # Credit the corresponding author in the site parameters - -[[authors]] # Credit this author -email = "will.faught@example.com" -name = "Will Faught" -url = "https://willfaught.com/paige" - [paige] alert = "Alert!" # Markdown displayed before the page body (defaults to primary alert type) pin = true # Display this page before the rest @@ -404,6 +385,15 @@ weight = 40 If you intend for the menu to be sufficient for all navigation, see [how to hide other navigation features](#menu-navigation-only). +### Taxonomies + +Support for authors, categories, series, and tags taxonomies is built in. + +Set `default` to `true` in the front matter of an author term page for that author to be credited in regular pages that have no authors parameter. +A default author must be referenced at least once explicitly in a regular page. + +The `email` and `url` parameters in the front matter of an author term page are used in feeds if present. + ## Layouts ### Cloud diff --git a/exampleSite/hugo.toml b/exampleSite/hugo.toml index 02851920..2af0894b 100644 --- a/exampleSite/hugo.toml +++ b/exampleSite/hugo.toml @@ -90,12 +90,6 @@ section = ["atom", "html", "rss"] taxonomy = ["atom", "html", "rss"] term = ["atom", "html", "rss"] -[params.authors.will-faught] -default = true -email = "will.faught@example.com" -name = "Will Faught" -url = "https://willfaught.com/paige" - [params.paige] site_title = "Paige" site_description = "Powerful, pliable pixel perfection" diff --git a/layouts/_default/list.atom.xml b/layouts/_default/list.atom.xml index 2e06d8be..49f185b0 100644 --- a/layouts/_default/list.atom.xml +++ b/layouts/_default/list.atom.xml @@ -164,15 +164,15 @@ {{ with partial "paige/authors.html" . }} {{ range . }} - {{ with .email }} + {{ with .Params.email }} {{ . }} {{ end }} - {{ with .name }} + {{ with .Params.Title }} {{ . }} {{ end }} - {{ with .url }} + {{ with .Params.url }} {{ . }} {{ end }} diff --git a/layouts/_default/list.rss.xml b/layouts/_default/list.rss.xml index d04a68ac..ee58198a 100644 --- a/layouts/_default/list.rss.xml +++ b/layouts/_default/list.rss.xml @@ -85,10 +85,10 @@ {{ with $authors }} {{ $primary := index . 0 }} - {{ if and $primary.name $primary.email }} - {{ $author = printf "%s (%s)" $primary.email $primary.name }} - {{ else if $primary.email }} - {{ $author = $primary.email }} + {{ if and $primary.Params.email $primary.Title }} + {{ $author = printf "%s (%s)" $primary.Params.email $primary.Title }} + {{ else if $primary.Params.email }} + {{ $author = $primary.Params.email }} {{ end }} {{ end }} diff --git a/layouts/partials/paige/authors.html b/layouts/partials/paige/authors.html index 6202cd6d..1e44cacc 100644 --- a/layouts/partials/paige/authors.html +++ b/layouts/partials/paige/authors.html @@ -1,40 +1,11 @@ {{ $page := . }} -{{ $result := slice }} +{{ $result := $page.GetTerms "authors" }} -{{ if $page.Params.authors }} - {{ range $page.Params.authors }} - {{ $email := "" }} - {{ $id := "" }} - {{ $name := "" }} - {{ $url := "" }} - - {{ if reflect.IsMap . }} - {{ with .author }} - {{ $id = . }} - {{ $author := index site.Params.authors $id }} - {{ $email = $author.email }} - {{ $name = $author.name }} - {{ $url = $author.url }} - {{ else }} - {{ $email = .email }} - {{ $name = .name }} - {{ $url = .url }} - {{ end }} - {{ else }} - {{ $id = . }} - {{ $author := index site.Params.authors $id }} - {{ $email = $author.email }} - {{ $name = $author.name }} - {{ $url = $author.url }} - {{ end }} - - {{ $result = $result | append (dict "email" $email "id" $id "name" $name "url" $url) }} - {{ end }} -{{ else if site.Params.authors }} - {{ range $k, $v := site.Params.authors }} - {{ if eq $v.default true }} - {{ $result = $result | append (dict "email" $v.email "id" $k "name" $v.name "url" $v.url) }} +{{ if and $page.IsPage (not $result) site.Taxonomies.authors }} + {{ range $id, $taxonomy := site.Taxonomies.authors }} + {{ if eq $taxonomy.Page.Params.default true }} + {{ $result = $result | append $taxonomy.Page }} {{ end }} {{ end }} {{ end }} diff --git a/layouts/partials/paige/metadata.html b/layouts/partials/paige/metadata.html index ec6668e9..e14d64a8 100644 --- a/layouts/partials/paige/metadata.html +++ b/layouts/partials/paige/metadata.html @@ -52,15 +52,7 @@ {{ range $i, $author := . -}} {{- if gt $i 0 }}, {{ end -}} - {{- with $author.id -}} - {{- with site.GetPage (print "authors/" .) -}} - {{ .Title | default $author.name }} - {{- else -}} - {{- $author.name -}} - {{- end -}} - {{- else -}} - {{- $author.name -}} - {{- end -}} + {{ .Title }} {{- end }}

{{ end }} diff --git a/layouts/partials/paige/metas.html b/layouts/partials/paige/metas.html index 3b09fac5..a0088286 100644 --- a/layouts/partials/paige/metas.html +++ b/layouts/partials/paige/metas.html @@ -6,7 +6,7 @@ {{ $authors := slice }} {{ range . }} - {{ $authors = $authors | append .name }} + {{ $authors = $authors | append .Title }} {{ end }} diff --git a/layouts/partials/paige/page.html b/layouts/partials/paige/page.html index b56e7467..a0770c94 100644 --- a/layouts/partials/paige/page.html +++ b/layouts/partials/paige/page.html @@ -84,15 +84,7 @@ {{ range $i, $author := . -}} {{- if gt $i 0 }}, {{ end -}} - {{- with $author.id -}} - {{- with site.GetPage (print "authors/" .) -}} - {{ .Title | default $author.name }} - {{- else -}} - {{- $author.name -}} - {{- end -}} - {{- else -}} - {{- $author.name -}} - {{- end -}} + {{ .Title }} {{- end }}

{{ end }}