ทำให้ 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 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 ช่วยตรวจสอบ