diff options
| -rw-r--r-- | CHANGELOG.md | 1 | ||||
| -rw-r--r-- | README.md | 6 | ||||
| -rw-r--r-- | exampleSite/content/entry/welcome.md | 2 | ||||
| -rw-r--r-- | exampleSite/hugo.gemini.toml | 2 | ||||
| -rw-r--r-- | exampleSite/hugo.toml | 2 | ||||
| -rw-r--r-- | layouts/section.atom.xml | 53 | ||||
| -rw-r--r-- | layouts/section.gemini_atom.xml | 52 |
7 files changed, 113 insertions, 5 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index 8330584..551d2b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,7 @@ - Add example site with annotated configuration for website and capsule - Add section templates, which no output format previously had +- Add Atom feeds for sections, in both output formats - Add Atom feed autodiscovery links to document head - Support more than one audio version per entry @@ -62,7 +62,7 @@ Every page kind that the site renders must list its output formats, because Hugo ```toml [outputs] home = ["HTML", "Atom"] - section = ["HTML"] + section = ["HTML", "Atom"] taxonomy = ["HTML", "Atom"] term = ["HTML", "Atom"] page = ["HTML"] @@ -73,12 +73,14 @@ And for the capsule: ```toml [outputs] home = ["Gemini", "Gemini_Atom"] - section = ["Gemini"] + section = ["Gemini", "Gemini_Atom"] taxonomy = ["Gemini", "Gemini_Atom"] term = ["Gemini", "Gemini_Atom"] page = ["Gemini"] ``` +A feed is rendered for every kind that lists `Atom` or `Gemini_Atom`: the homepage, each section, the taxonomy list and each term. Leave the format out of a kind to omit that feed. + ### Optional | Setting | Default | Purpose | diff --git a/exampleSite/content/entry/welcome.md b/exampleSite/content/entry/welcome.md index 614a490..08fa557 100644 --- a/exampleSite/content/entry/welcome.md +++ b/exampleSite/content/entry/welcome.md @@ -16,7 +16,7 @@ an entry's front matter to render links in place on both instead. ## What The Theme Gives You * An entry list on the homepage, and one per tag -* Atom feeds for the homepage, each tag and the tag list +* Atom feeds for the homepage, each section, each tag and the tag list * Publication date and reading time on every entry * Optional audio versions of entries * No JavaScript and no analytics diff --git a/exampleSite/hugo.gemini.toml b/exampleSite/hugo.gemini.toml index 64d3956..afca2d5 100644 --- a/exampleSite/hugo.gemini.toml +++ b/exampleSite/hugo.gemini.toml @@ -43,7 +43,7 @@ disableKinds = ["404", "sitemap"] # into the capsule. [outputs] home = ["Gemini", "Gemini_Atom"] - section = ["Gemini"] + section = ["Gemini", "Gemini_Atom"] taxonomy = ["Gemini", "Gemini_Atom"] term = ["Gemini", "Gemini_Atom"] page = ["Gemini"] diff --git a/exampleSite/hugo.toml b/exampleSite/hugo.toml index b964499..7a8dd83 100644 --- a/exampleSite/hugo.toml +++ b/exampleSite/hugo.toml @@ -43,7 +43,7 @@ enableEmoji = true # has no template for. [outputs] home = ["HTML", "Atom"] - section = ["HTML"] + section = ["HTML", "Atom"] taxonomy = ["HTML", "Atom"] term = ["HTML", "Atom"] page = ["HTML"] diff --git a/layouts/section.atom.xml b/layouts/section.atom.xml new file mode 100644 index 0000000..689c70d --- /dev/null +++ b/layouts/section.atom.xml @@ -0,0 +1,53 @@ +{{ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" | safeHTML }} +{{/* The XML declaration is emitted before anything else, including the + variables below, since whitespace may not precede it. */}} +{{ $authorName := "" }} +{{ with site.Params.author }} + {{ if reflect.IsMap . }} + {{ with .name }} + {{ $authorName = . }} + {{ end }} + {{ else }} + {{ $authorName = . }} + {{ end }} +{{ end }} +{{ if not $authorName }} + {{ errorf "Missing author" }} +{{ end }} + +{{ $authorEmail := "" }} +{{ with site.Params.author }} + {{ if reflect.IsMap . }} + {{ with .email }} + {{ $authorEmail = . }} + {{ end }} + {{ end }} +{{ end }} + +{{ $pages := .Pages.ByPublishDate.Reverse }} +{{ $limit := .Site.Config.Services.RSS.Limit }} +{{ if ge $limit 1 }} +{{ $pages = first $limit $pages }} +{{ end }} +<feed xmlns="http://www.w3.org/2005/Atom"> + <id>{{ .Permalink }}</id> + <title>{{ .Site.Title }}</title> + <updated>{{ .PublishDate.Format "2006-01-02T15:04:05-0700" | safeHTML }}</updated> + <link href="{{ .Permalink }}atom.xml" rel="self" /> + <link href="{{ .Permalink }}" rel="alternate" /> + <author> + <name>{{ $authorName }}</name> + {{ with $authorEmail }} + <email>{{ . }}</email>{{ end }} + </author> + <generator>Hugo -- gohugo.io</generator> + <rights type="html">{{ replace .Site.Copyright "{currentYear}" (now.Format "2006") }}</rights> + <subtitle>{{ .Site.Params.Description }}</subtitle>{{ range $pages }} + <entry> + <id>{{ .Permalink }}</id> + <title type="html">{{ .Title }}</title> + <updated>{{ .PublishDate.Format "2006-01-02T15:04:05-0700" | safeHTML }}</updated> + <link href="{{ .Permalink }}" /> + <content type="html">{{ .Content | html }}</content> + </entry>{{ end }} +</feed> diff --git a/layouts/section.gemini_atom.xml b/layouts/section.gemini_atom.xml new file mode 100644 index 0000000..6425e31 --- /dev/null +++ b/layouts/section.gemini_atom.xml @@ -0,0 +1,52 @@ +{{ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" | safeHTML }} +{{/* The XML declaration is emitted before anything else, including the + variables below, since whitespace may not precede it. */}} +{{ $authorName := "" }} +{{ with site.Params.author }} + {{ if reflect.IsMap . }} + {{ with .name }} + {{ $authorName = . }} + {{ end }} + {{ else }} + {{ $authorName = . }} + {{ end }} +{{ end }} +{{ if not $authorName }} + {{ errorf "Missing author" }} +{{ end }} + +{{ $authorEmail := "" }} +{{ with site.Params.author }} + {{ if reflect.IsMap . }} + {{ with .email }} + {{ $authorEmail = . }} + {{ end }} + {{ end }} +{{ end }} + +{{ $pages := .Pages.ByPublishDate.Reverse }} +{{ $limit := .Site.Config.Services.RSS.Limit }} +{{ if ge $limit 1 }} +{{ $pages = first $limit $pages }} +{{ end }} +<feed xmlns="http://www.w3.org/2005/Atom"> + <id>{{ .Permalink | strings.TrimSuffix "index.gmi" }}</id> + <title>{{ .Site.Title }}</title> + <updated>{{ .PublishDate.Format "2006-01-02T15:04:05-0700" | safeHTML }}</updated> + <link href="{{ .Permalink | replaceRE `index.gmi$` "atom.xml" | safeURL }}" rel="self" /> + <link href="{{ .Permalink | strings.TrimSuffix "index.gmi" | safeURL }}" rel="alternate" /> + <author> + <name>{{ $authorName }}</name> + {{ with $authorEmail }} + <email>{{ . }}</email>{{ end }} + </author> + <generator>Hugo -- gohugo.io</generator> + <rights type="html">{{ replace .Site.Copyright "{currentYear}" (now.Format "2006") }}</rights> + <subtitle>{{ .Site.Params.Description }}</subtitle>{{ range $pages }} + <entry> + <id>{{ .Permalink | strings.TrimSuffix "index.gmi" }}</id> + <title>{{ .Title }}</title> + <updated>{{ .PublishDate.Format "2006-01-02T15:04:05-0700" | safeHTML }}</updated> + <link href="{{ .Permalink | strings.TrimSuffix "index.gmi" | safeURL }}" rel="alternate" /> + </entry>{{ end }} +</feed> |
