diff options
author | Eric Park <me@ericswpark.com> | 2021-05-25 20:59:42 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-25 20:59:42 +0300 |
commit | 80312357ceee167aa9f224281363933a47e27994 (patch) | |
tree | e248357fee151cdb3f18df8c75bb7600491e4dee | |
parent | b7c82a7ff11dee3988e346005eb3627ab0964ae7 (diff) |
RSS improvements (#207)
* Show full article in RSS feed
* README: add RSS information
* README: add RSS disable tip
Closes #203
-rw-r--r-- | README.md | 23 | ||||
-rw-r--r-- | layouts/_default/rss.xml | 43 |
2 files changed, 66 insertions, 0 deletions
@@ -543,6 +543,29 @@ title = "e-mail" url = "mailto:mail@example.com" ``` +### RSS + +Hugo natively supports RSS. To generate a feed for a given page, append `index.xml` to the page URL. + +Note that the RSS feed at the base of your website will include all of the pages on your website. To only include posts in your RSS feed, generate the feed within the `posts/` subdirectory with the URL `posts/index.xml`. + +To only generate an RSS feed for your posts, disable the RSS output for the other page types: + +```toml +[outputs] + home = ["HTML"] + section = ["HTML", "RSS"] + taxonomy = ["HTML"] + term = ["HTML"] +``` + +By default, the RSS feed contains a brief summary of each page. If you prefer to show the entire contents for each page, then use the `rssFullContent` parameter: + +```toml +[params] +rssFullContent = true +``` + ## License Anatole is licensed under the [MIT license](https://github.com/lxndrblz/anatole/blob/master/LICENSE). diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml new file mode 100644 index 0000000..bd2d079 --- /dev/null +++ b/layouts/_default/rss.xml @@ -0,0 +1,43 @@ +{{- $pctx := . -}} +{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}} +{{- $pages := slice -}} +{{- if or $.IsHome $.IsSection -}} +{{- $pages = $pctx.RegularPages -}} +{{- else -}} +{{- $pages = $pctx.Pages -}} +{{- end -}} +{{- $limit := .Site.Config.Services.RSS.Limit -}} +{{- if ge $limit 1 -}} +{{- $pages = $pages | first $limit -}} +{{- end -}} +{{- printf "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\"?>" | safeHTML }} +<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> + <channel> + <title>{{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title> + <link>{{ .Permalink }}</link> + <description>Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description> + <generator>Hugo -- gohugo.io</generator>{{ with .Site.LanguageCode }} + <language>{{.}}</language>{{end}}{{ with .Site.Author.email }} + <managingEditor>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</managingEditor>{{end}}{{ with .Site.Author.email }} + <webMaster>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</webMaster>{{end}}{{ with .Site.Copyright }} + <copyright>{{.}}</copyright>{{end}}{{ if not .Date.IsZero }} + <lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end }} + {{- with .OutputFormats.Get "RSS" -}} + {{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }} + {{- end -}} + {{ range $pages }} + <item> + <title>{{ .Title }}</title> + <link>{{ .Permalink }}</link> + <pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate> + {{ with .Site.Author.email }}<author>{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}</author>{{end}} + <guid>{{ .Permalink }}</guid> + {{ if eq .Site.Params.rssFullContent true }} + <description>{{ .Content | html }}</description> + {{ else }} + <description>{{ .Summary | html }}</description> + {{ end }} + </item> + {{ end }} + </channel> +</rss>
\ No newline at end of file |