From 256eae44e9f861408b584c856def3cf818ae9fe1 Mon Sep 17 00:00:00 2001 From: Eryn Wells Date: Sun, 20 Oct 2024 09:12:07 -0700 Subject: [PATCH] Finish RSS and Atom implementations --- layouts/_default/atom_entry.atom | 6 ++++ layouts/_default/rss_item.rss | 4 +++ layouts/_default/section.atom | 7 +++++ layouts/index.atom | 7 +++++ layouts/index.rss | 18 ++++++++++++ layouts/partials/feeds/atom/base.xml | 26 +++++++++++++++++ .../partials/feeds/atom/entry_metadata.xml | 11 ++++++++ layouts/partials/feeds/rss/base.xml | 28 +++++++++++++++++++ layouts/partials/feeds/rss/item_metadata.xml | 11 ++++++++ 9 files changed, 118 insertions(+) create mode 100644 layouts/_default/atom_entry.atom create mode 100644 layouts/_default/rss_item.rss create mode 100644 layouts/_default/section.atom create mode 100644 layouts/index.atom create mode 100644 layouts/index.rss create mode 100644 layouts/partials/feeds/atom/base.xml create mode 100644 layouts/partials/feeds/atom/entry_metadata.xml create mode 100644 layouts/partials/feeds/rss/base.xml create mode 100644 layouts/partials/feeds/rss/item_metadata.xml diff --git a/layouts/_default/atom_entry.atom b/layouts/_default/atom_entry.atom new file mode 100644 index 0000000..4ad1c83 --- /dev/null +++ b/layouts/_default/atom_entry.atom @@ -0,0 +1,6 @@ + + {{ partial "feeds/atom/entry_metadata.xml" . }} + {{- if .Content -}} + {{ ` + {{- end -}} + diff --git a/layouts/_default/rss_item.rss b/layouts/_default/rss_item.rss new file mode 100644 index 0000000..44f1961 --- /dev/null +++ b/layouts/_default/rss_item.rss @@ -0,0 +1,4 @@ + + {{ partial "feeds/rss/item_metadata.xml" . }} + {{ ` + diff --git a/layouts/_default/section.atom b/layouts/_default/section.atom new file mode 100644 index 0000000..632e1a2 --- /dev/null +++ b/layouts/_default/section.atom @@ -0,0 +1,7 @@ +{{- $page := . -}} +{{- $pages := $page.RegularPages -}} +{{- $limit := $.Site.Config.Services.RSS.Limit -}} +{{- if ge $limit 1 -}} + {{- $pages = $pages | first $limit -}} +{{- end -}} +{{ partial "feeds/atom/base.xml" (dict "context" $page "pages" $pages "limit" $limit) }} diff --git a/layouts/index.atom b/layouts/index.atom new file mode 100644 index 0000000..2e564a3 --- /dev/null +++ b/layouts/index.atom @@ -0,0 +1,7 @@ +{{- $pages := .Site.RegularPages -}} +{{- $limit := .Site.Config.Services.RSS.Limit -}} +{{- if ge $limit 1 -}} + {{- $pages = $pages | first $limit -}} +{{- end -}} + +{{ partial "feeds/atom/base.xml" (dict "context" . "pages" $pages) }} diff --git a/layouts/index.rss b/layouts/index.rss new file mode 100644 index 0000000..e46c88d --- /dev/null +++ b/layouts/index.rss @@ -0,0 +1,18 @@ +{{- $pageContext := . -}} +{{- if .IsHome -}} + {{ $pageContext = .Site }} +{{- end -}} + +{{- $pages := slice -}} +{{- if or $.IsHome $.IsSection -}} + {{- $pages = $pageContext.RegularPages -}} +{{- else -}} + {{- $pages = $pageContext.Pages -}} +{{- end -}} + +{{- $limit := .Site.Config.Services.RSS.Limit -}} +{{- if ge $limit 1 -}} + {{- $pages = $pages | first $limit -}} +{{- end -}} + +{{ partial "feeds/rss/base.xml" (dict "context" . "pages" $pages "Site" .Site) }} diff --git a/layouts/partials/feeds/atom/base.xml b/layouts/partials/feeds/atom/base.xml new file mode 100644 index 0000000..e965cc3 --- /dev/null +++ b/layouts/partials/feeds/atom/base.xml @@ -0,0 +1,26 @@ +{{- $context := .context -}} +{{- $pages := .pages -}} +{{- $limit := .limit -}} +{{ printf "" | safeHTML }} + + {{ $context.Site.Title }} + + + + {{ with $context.Date }} + {{ . | time.Format "2006-01-02T15:04:05-07:00" | safeHTML }} + {{ end }} + {{ $context.Permalink }} + {{ with $context.Site.Author }} + + {{ with .name }}{{ . }}{{ end }} + {{ with .email }}{{ . }}{{ end }} + {{ $context.Site.Home.Permalink }} + + {{ end }} + Hugo {{ hugo.Version }} + © 2020-{{ now.Year }} Eryn Wells + {{ range $pages }} + {{ .Render "atom_entry" }} + {{ end }} + diff --git a/layouts/partials/feeds/atom/entry_metadata.xml b/layouts/partials/feeds/atom/entry_metadata.xml new file mode 100644 index 0000000..ec15e30 --- /dev/null +++ b/layouts/partials/feeds/atom/entry_metadata.xml @@ -0,0 +1,11 @@ +{{ .Title }} +{{ .Permalink }} + +{{ .Date.Format "2006-01-02T15:04:05-07:00" | safeHTML }} +{{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }} +{{ range slice "series" "categories" "tags" }} + {{- range $.GetTerms . }} + {{- $scheme := (.Site.GetPage (printf "/%s" .Section)).Permalink -}} + + {{ end -}} +{{ end -}} diff --git a/layouts/partials/feeds/rss/base.xml b/layouts/partials/feeds/rss/base.xml new file mode 100644 index 0000000..559c566 --- /dev/null +++ b/layouts/partials/feeds/rss/base.xml @@ -0,0 +1,28 @@ +{{- $context := .context -}} +{{- $pages := .pages -}} +{{- printf "" | safeHTML }} + + + {{ $context.Site.Title }} + {{ $context.Permalink }} + Recent content on {{ $context.Site.Title }} + Hugo {{ hugo.Version }} + {{ with $context.Site.LanguageCode }}{{ . }}{{ end }} + {{ with $context.Site.Author }} + {{ .name }} <{{ .email }}> + {{ .name }} <{{ .email }}> + {{ end }} + {{ with $context.Site.Copyright -}} + {{ . }} + {{- end }} + {{ if not .Date.IsZero }} + {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} + {{ end }} + {{ with .OutputFormats.Get "RSS" }}{{ printf "" .Permalink .MediaType | safeHTML }}{{ end }} + {{ range $pages }} + {{ if not .Date.IsZero }} + {{ .Render "rss_item" }} + {{ end }} + {{ end }} + + diff --git a/layouts/partials/feeds/rss/item_metadata.xml b/layouts/partials/feeds/rss/item_metadata.xml new file mode 100644 index 0000000..e91378f --- /dev/null +++ b/layouts/partials/feeds/rss/item_metadata.xml @@ -0,0 +1,11 @@ +{{ .Title }} +{{ .Permalink }} +{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} +{{ with .Site.Author.email }}{{ . }}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}} +{{ .Permalink }} +{{- range slice "series" "categories" "tags" -}} + {{ range $.GetTerms . }} + {{- $domain := (.Site.GetPage (printf "/%s" .Section)).Permalink -}} + {{ .Title }} + {{ end }} +{{- end -}}