Files
HugoBlox-kit/layouts/_default/rss.xml
T
Julian Elve 904fd88714 fix: Hugo v0.58.0 breaks RSS template
In Hugo v0.58, Hugo team made a breaking change to fix .Data.Pages to actually show home pages when on homepage. Previously, the function returned all of the site's pages.

Hence this PR adds compatibility for RSS feeds in Hugo v0.58.0+.

Fix #1355
2019-09-24 13:44:48 +01:00

40 lines
1.8 KiB
XML

{{- /* Generate RSS v2 with full page content. */ -}}
{{- /* Upstream Hugo bug - RSS dates can be in future: https://github.com/gohugoio/hugo/issues/3918 */ -}}
{{- $page_context := cond .IsHome site . -}}
{{- $pages := $page_context.RegularPages -}}
{{- $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 ne .Title site.Title }}{{ with .Title }}{{.}} | {{ end }}{{end}}{{ site.Title }}</title>
<link>{{ .Permalink }}</link>
{{- with .OutputFormats.Get "RSS" }}
{{ printf "<atom:link href=%q rel=\"self\" type=%q />" .Permalink .MediaType | safeHTML }}
{{ end -}}
<description>{{ .Title | default site.Title }}</description>
<generator>Source Themes Academic (https://sourcethemes.com/academic/)</generator>
{{- with site.LanguageCode }}<language>{{.}}</language>{{end -}}
{{- with site.Copyright }}<copyright>{{ replace (replace . "{year}" now.Year) "&copy;" "©" | plainify }}</copyright>{{end -}}
{{- if not .Date.IsZero }}<lastBuildDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</lastBuildDate>{{ end -}}
{{- if .Scratch.Get "og_image" }}
<image>
<url>{{ .Scratch.Get "og_image" }}</url>
<title>{{ .Title | default site.Title }}</title>
<link>{{ .Permalink }}</link>
</image>
{{end -}}
{{ range $pages }}
<item>
<title>{{ .Title }}</title>
<link>{{ .Permalink }}</link>
<pubDate>{{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }}</pubDate>
<guid>{{ .Permalink }}</guid>
<description>{{ .Content | html }}</description>
</item>
{{ end }}
</channel>
</rss>