Hugo 设置 RSS 输出全文
文章目录
介绍
当前博客使用的 Hugo + Even 主题默认 RSS 中只输出摘要,但是想要修改为输出全文,方便订阅阅读。
环境
- Hugo v0.84.0
- Even v4.1.0
查找模板
even 主题没有自带 RSS 模板,使用的是 Hugo 默认模板。
通过官方文档可以得知默认 RSS 模板路径是 https://github.com/gohugoio/hugo/blob/master/tpl/tplimpl/embedded/templates/_default/rss.xml
。
但是实际需要的是 Hugo v0.84.0 版本的模板,因此需要前往 Releases 页面拿到 v0.84.0 的提交,然后拼接出最后的地址:https://github.com/gohugoio/hugo/blob/2c4689f7b8d3c1296111aa21bd07f6a66d677b44/tpl/tplimpl/embedded/templates/_default/rss.xml
这样可以保证拿到的版本与当前 Hugo 版本完全兼容。
修改模板
将默认模板保存到 themes/even/layouts/index.rss.xml
文件中,然后将 description
属性中的 Summary
修改为 Content
就可以了,只需要改这一处。
|
|
调试修正
修正方法
- 使用
hugo
命令将整个网站输出到public
目录中。 - 使用 Chrome 打开
public/index.xml
文件,文件加载完成后会报错。 - 使用 VSCode 打开
public/index.xml
文件,定位到报错的行号和列号。 - 使用 VSCode 全局文本查找提示报错位置的字符,然后将其替换为空。
- 重复 1 - 4 步,修复遇到的所有错误。
遇到的错误
|
|
这里出现的是一个 BackSpace 不可见字符,可以通过使用正则表达式搜索 \u0008
并替换为空删除掉。
|
|
这里出现的并不是 \u0027
而是 \u001b
,因为报错信息使用的是十进制,而 \u
中使用的是十六进制。通过查表可以知道这是 ESC 字符,可以在 VSCode 中选中并搜索替换。
输出策略
如果设置为输出全文,那么 200+ 篇文章的 index.xml
总大小在 2MB+,实在是太大了。
参考另一篇博客的方法,指定最新 10 篇文章,修改遍历的 range
范围:
|
|
修改为只输出最后 10 篇文章后,index.xml
大小可以降到 50KB 左右。
总结
通过 RSS 修改输出为全文,居然发现原有文章内存在着不少无用的不可见字符。Hugo 在输出 RSS 时未检查这些不可见字符是否合法,后续为了保证 RSS 可以正常使用,发布完文章后必须再手动检查一下 index.xml
是否存在解析错误。