Improved RSS template

This commit is contained in:
Caio Lente 2023-10-17 15:41:36 -03:00
parent 77893ccf46
commit bf804a0814
No known key found for this signature in database
GPG Key ID: E66D381776EFC03A
4 changed files with 45 additions and 5 deletions

View File

@ -100,6 +100,8 @@ Every once in a while, as I keep using **Bear Cub**, I notice that there is some
functionality missing. Currently, these are the "advanced features" that I have
already implemented:
- Full-text RSS feed: an enhanced RSS feed template that includes the (properly
encoded) full content of your posts in the feed itself.
- Static content: you can create empty blog entries that act as links to static
files by including `link: "{url}"` in a post's [front
matter](https://gohugo.io/content-management/front-matter/). You can also add
@ -165,7 +167,6 @@ enableRobotsTXT = true
LanguageCode = "en-US"
contentDir = "content"
[languages.en.params]
blogPath = "blog" # Path to your blog section (used by RSS)
madeWith = "Made with [Bear Cub](https://github.com/clente/hugo-bearcub)"
[languages.pt]
title = "Bear Cub"
@ -173,7 +174,6 @@ enableRobotsTXT = true
LanguageCode = "pt-BR"
contentDir = "content.pt"
[languages.pt.params]
blogPath = "blog" # Path to your blog section (used by RSS)
madeWith = "Feito com [Bear Cub](https://github.com/clente/hugo-bearcub)"
[params]

View File

@ -33,7 +33,6 @@ enableRobotsTXT = true
LanguageCode = "en-US"
contentDir = "content"
[languages.en.params]
blogPath = "blog" # Path to your blog section (used by RSS)
madeWith = "Made with [Bear Cub](https://github.com/clente/hugo-bearcub)"
[languages.pt]
title = "Bear Cub"
@ -41,7 +40,6 @@ enableRobotsTXT = true
LanguageCode = "pt-BR"
contentDir = "content.pt"
[languages.pt.params]
blogPath = "blog" # Path to your blog section (used by RSS)
madeWith = "Feito com [Bear Cub](https://github.com/clente/hugo-bearcub)"
[params]

42
layouts/_default/rss.xml Normal file
View File

@ -0,0 +1,42 @@
{{- $pctx := . -}}
{{- if .IsHome -}}{{ $pctx = .Site }}{{- end -}}
{{- $pages := slice -}}
{{- if $.IsHome -}}
{{- $pages = where $pctx.AllPages "Kind" "page" -}}
{{ else if $.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" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title>{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }}</title>
<link>{{ .Permalink }}</link>
<description>Recent content {{ if not .IsHome }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }}</description>
<generator>Hugo -- gohugo.io</generator>
<language>{{ site.Language.LanguageCode }}</language>{{ 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 .Params.author }}<author>{{.}}</author>{{ end }}
<guid>{{ .Permalink }}</guid>
<description>{{ .Summary | plainify }}</description>
<content:encoded>{{ `<![CDATA[` | safeHTML }}{{ .Content | safeHTML }}{{ `]]>` | safeHTML }}</content:encoded>
</item>
{{ end }}
</channel>
</rss>

View File

@ -1,7 +1,7 @@
{{ range .Site.Menus.main.ByWeight }}
<a href="{{ .URL }}">{{ .Name }}</a>
{{ end }}
<a href="{{ relLangURL .Site.Params.blogPath }}/index.xml">RSS</a>
<a href='{{ absURL "index.xml" }}'>RSS</a>
<!-- Convert this page's translations into a dict -->
{{ $translations := dict }}