基于Hugo Academic与blogdown的站点RSS订阅配置需求及问题
我帮你梳理一下具体的操作步骤,针对你用blogdown搭建的Hugo Academic站点,不管是全站RSS还是特定分类的独立订阅,都能轻松搞定:
一、先搞定全站默认RSS
其实Hugo Academic模板默认就开启了全站RSS订阅功能,你直接访问站点根目录加/index.xml就能看到(比如你的站点就是根域名拼上这个路径)。
如果想确认配置是否正确,可以打开站点根目录的config/_default/config.toml,检查有没有这段配置(一般默认就有,要是没有就加上):
[outputs] home = ["HTML", "RSS", "JSON"] page = ["HTML"] section = ["HTML", "RSS"]
这里的home = ["HTML", "RSS", "JSON"]就是让Hugo生成全站的RSS feed,section包含RSS则是为后续分类RSS做准备。
二、配置「面向R Bloggers」分类的独立RSS
接下来是你需要的特定分类独立订阅,步骤如下:
确认分类的slug:首先得搞清楚这个分类在Hugo里的slug(也就是URL里的标识)。你可以看已发布的分类页面地址,或者打开示例博文的Front Matter(就是博文开头的那段YAML配置),看
categories字段。如果是中文分类名,Hugo可能会自动转成拼音slug(比如mian-xiang-r-bloggers),你可以先部署后访问分类页面,从地址栏里拿到正确的slug。自动生成分类RSS:刚才的
config.toml里section = ["HTML", "RSS"]已经开启了每个分类的RSS生成,所以对应的分类RSS地址就是/categories/[你的分类slug]/index.xml。比如slug是r-bloggers,那地址就是/categories/r-bloggers/index.xml,部署后访问这个地址就能看到该分类下所有文章的RSS feed了。自定义分类RSS内容(可选):如果你想给这个分类的RSS改个专属标题、描述之类的,可以自定义模板。先在站点根目录新建
layouts/section文件夹(没有的话就创建),然后新建[你的分类slug].rss.xml文件(比如r-bloggers.rss.xml),复制下面的模板内容并修改你需要的部分(比如把<title>改成「面向R Bloggers - Malte Grosser的站点」):
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"> <channel> <title>{{ .Site.Title }} - 面向R Bloggers</title> <link>{{ .Permalink }}</link> <description>这里可以写分类专属的描述内容</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 }} <atom:link href="{{ .Permalink }}index.xml" rel="self" type="application/rss+xml" /> {{ 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>{{ .Summary | html }}</description> </item> {{ end }} </channel> </rss>
- 添加订阅入口到站点(可选):为了方便用户订阅,你可以把RSS链接加到导航栏里。打开
config/_default/menus.toml,添加下面的内容:
[[main]] name = "全站RSS订阅" url = "/index.xml" weight = 100 [[main]] name = "面向R Bloggers RSS" url = "/categories/r-bloggers/index.xml" weight = 101
这里的weight用来控制导航项的顺序,数字越小越靠前,你可以根据自己的需求调整。
最后,把修改后的代码推送到GitHub,Netlify会自动重新部署,部署完成后你就可以验证这两个RSS feed是否正常工作啦!
内容的提问来源于stack exchange,提问作者Taz

