ทำให้ Hugo โชว์บทความเต็ม ๆ ใน RSS
โดยปกติแล้ว RSS Template ของ Hugo จะโชว์บทความด้วย .Summary ทำให้ข้อมูลไปโชว์ใน RSS ไม่ครบ หลังจากได้ลองค้นจากหลาย ๆ ที่ พบว่าแก้ไข Template เป็นแบบนี้ได้ข้อมูลครบถ้วน และ แสดงผลได้ถูกต้องที่สุด
ขั้นตอนการทำ
สร้างไฟล์
layouts/rss.xml(ตรวจสอบลำดับการอ่านไฟล์) เพื่อใช้แทน Template เดิมtouch layouts/rss.xmlคัดลอกข้อมูลจาก https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_default/rss.xml มาใส่
เพิ่ม
xmlns:contentเพื่อให้ Firefox อ่าน XML นี้ได้<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">เพิ่ม
contentเพื่อให้ RSS Reader นำไปใช้แทน Description<content:encoded> {{ `<![CDATA[` | safeHTML }} {{ .Content }} {{ `]]>` | safeHTML }} </content:encoded>
Final Code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <!-- REF: https://gohugo.io/templates/rss/#the-embedded-rssxml --> | |
| {{- $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" xmlns:content="http://purl.org/rss/1.0/modules/content/"> | |
| <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> | |
| <description>{{ .Plain }}</description> | |
| <content:encoded> | |
| {{ `<![CDATA[` | safeHTML }} | |
| {{ .Content }} | |
| {{ `]]>` | safeHTML }} | |
| </content:encoded> | |
| </item> | |
| {{ end }} | |
| </channel> | |
| </rss> |
ทดสอบการใช้งาน
เราสามารถตรวจสอบ RSS ของเราได้ด้วยโปรแกรม RSS Reader ทั่วไป หรือ สามารถให้ w3.org ช่วยตรวจสอบ