From f60940560d8a1165fc051e69af1ddbe4873b8d9c Mon Sep 17 00:00:00 2001 From: razonyang Date: Wed, 7 Sep 2022 22:57:58 +0800 Subject: [PATCH] feat(rss): add custom RSS template --- exampleSite/config/_default/params.toml | 3 ++ layouts/_default/rss.xml | 3 +- layouts/partials/footer/copyright.html | 2 +- layouts/partials/helpers/copyright.html | 1 + layouts/partials/rss.html | 42 ++++++++++++++++++++++++- layouts/partials/rss/enclosure.html | 16 ++++++++++ 6 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 layouts/partials/helpers/copyright.html create mode 100644 layouts/partials/rss/enclosure.html diff --git a/exampleSite/config/_default/params.toml b/exampleSite/config/_default/params.toml index 2d2b0abf3..6b48a3bcc 100644 --- a/exampleSite/config/_default/params.toml +++ b/exampleSite/config/_default/params.toml @@ -250,3 +250,6 @@ viewer = true # Image Viewer [docs] [docs.nav] # expand = true # Expand docs navigations. + +[feeds] + contentAsDescription = true diff --git a/layouts/_default/rss.xml b/layouts/_default/rss.xml index 8f4560ee8..08b4bd9da 100644 --- a/layouts/_default/rss.xml +++ b/layouts/_default/rss.xml @@ -1,2 +1 @@ -{{- $res := partial "rss" . }} -{{- replace $res "{year}" now.Year 1 | safeHTML -}} +{{- partial "rss" . }} \ No newline at end of file diff --git a/layouts/partials/footer/copyright.html b/layouts/partials/footer/copyright.html index 94e155cb5..990c5f487 100644 --- a/layouts/partials/footer/copyright.html +++ b/layouts/partials/footer/copyright.html @@ -1,3 +1,3 @@ diff --git a/layouts/partials/helpers/copyright.html b/layouts/partials/helpers/copyright.html new file mode 100644 index 000000000..7937a4c10 --- /dev/null +++ b/layouts/partials/helpers/copyright.html @@ -0,0 +1 @@ +{{ replace .Site.Copyright "{year}" now.Year }} diff --git a/layouts/partials/rss.html b/layouts/partials/rss.html index 5a11fe503..fbd719a4d 100644 --- a/layouts/partials/rss.html +++ b/layouts/partials/rss.html @@ -1 +1,41 @@ -{{- template "_internal/_default/rss.xml" . }} +{{/* Source: https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_default/rss.xml */}} +{{- $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 "" | safeHTML }} + + + {{ if eq .Title .Site.Title }}{{ .Site.Title }}{{ else }}{{ with .Title }}{{.}} on {{ end }}{{ .Site.Title }}{{ end }} + {{ .Permalink }} + Recent content {{ if ne .Title .Site.Title }}{{ with .Title }}in {{.}} {{ end }}{{ end }}on {{ .Site.Title }} + Hugo -- gohugo.io{{ with .Site.LanguageCode }} + {{.}}{{end}}{{ with .Site.Author.email }} + {{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}}{{ with .Site.Author.email }} + {{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}} + {{- partial "helpers/copyright" . }}{{ 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 }} + + {{ .Title }} + {{ .Permalink }} + {{ .Date.Format "Mon, 02 Jan 2006 15:04:05 -0700" | safeHTML }} + {{ with .Site.Author.email }}{{.}}{{ with $.Site.Author.name }} ({{.}}){{end}}{{end}} + {{ .Permalink }} + {{ if default false $.Site.Params.feeds.contentAsDescription }}{{ .Content | html }}{{ else }}{{ .Summary | html }}{{ end }} + {{- partial "rss/enclosure" . }} + + {{ end }} + + diff --git a/layouts/partials/rss/enclosure.html b/layouts/partials/rss/enclosure.html new file mode 100644 index 000000000..c7df7332c --- /dev/null +++ b/layouts/partials/rss/enclosure.html @@ -0,0 +1,16 @@ +{{- if .Params.images }} + {{- $img := index .Params.images 0 }} + {{- $url := urls.Parse $img }} + {{- $filename := path.Join "static" $img }} + {{- if and (not $url.Scheme) (fileExists $filename) -}} + {{- $file := readFile $filename }} + {{- $imgConfig := imageConfig $filename }} + + {{- end -}} +{{- else -}} + {{- $images := .Resources.ByType "image" -}} + {{- $featured := $images.GetMatch "*feature*" -}} + {{- with $featured -}} + + {{- end -}} +{{- end -}}