维护日志|No.4:装上RSS了!
No.3 的正式版都没出先把 No.4 写了,这就是我。
目录
忍不住鼓捣了一下,Hugo 自带 RSS 功能但这个主题没有准备。主页 description 底下那给各种网站图标留空的一行,主题准备了整整 70 个 svg 图标,但就是没有 RSS。哈哈,好吧,我自己搞!
研究全部基于 Congo 主题的代码,主要记录一下对主题layouts
的研究。如果还有任何人用 Congo 的话可以作为参考()。
鼓捣过程 #
先在 Congo 的 GitHub repo 讨论区搜了一下,找到了rss.xml
的文件链接,直接抄下来就能用。但咋用呢?
这位仁兄说把index.rss.xml
(和上面的rss.xml
其实是一个文件,但我完全不知道为何要加上index.
的前缀,问了 ChatGPT 也这么说,听 AI 的!)放在themes/congo/layouts/_default
里,给我提供了个思路。themes
文件夹最好不要乱动,一切都在上级的博客文件夹里覆盖,原因之前折腾了我三小时的翻译问题已经说明了。所以这个index.rss.xml
直接放在layouts/_default
里就好了。
接下来又咋办呢?现在需要说明一下 Congo 主题的代码了。主页用来放各种图标的那一行,在languages.zh-Hans.toml
里是以这样的格式出现的:
links = [ { link = "https://link-to-some-website.com/" } ]
也就是说我想要把 RSS 放进去的话大概是
links = [
{ link = "https://link-to-some-website.com/" },
{ rss = "某个神秘链接" }
]
这样的格式。问题在于这个链接究竟应该放啥,还有我要如何把 RSS 的图标放上去。
通过测试确认link
,rss
等左侧的变量需要和图标的文件名相同。由于我知道其他已有的图标在themes/congo/assets/icons
里,依样画葫芦在assets/icons
里放上rss.svg
即可。主题官方文档也有说明。
原本这些猜也猜得到,但被 GPT 狠狠误导了,一直在让我找这一行图标的代码在哪里然后手动添加,于是我非常认真地(也没有特别认真吧)研究了一下 Congo 的布局代码,但实际上并不需要,把links
这玩意写好就行。总之发现这一行图标的代码应该是在themes/congo/layouts/partials/home/profile.html
,这里存储了profile.html
和page.html
两种主页布局,如果要自定义的话估计也是放在这里。在profile.html
(我用的布局)里发现这一行代码{{ partialCached "author-links.html" . }}
,目测就是这一行图标的代码,遂再去找author-links.html
。还是好找的,往回走一层就在themes/congo/layouts/partials
里,里面有一行{{ partial "icon.html" $name }}
,同目录下找icon.html
看到{{ $icon := resources.Get (printf "icons/%s.svg" ($.Get 0)) }}
, 虽然不太懂但看到%s
这个也能确认了,以及这里也能看到代码明确规定是icons
文件夹里的.svg
文件。
上一段真的有人看吗?Anyway,还剩下链接究竟放什么。GPT 苦口婆心跟我说是{ rss = "/index.xml" }
,但我不知道为什么一直写的/index.rss.xml
,要么就是rss.xml
,一直在 404。最后还是看了别人的 RSS url 发现后缀显示的都是/index.xml
,终于回头是岸。就这样弄好了。
速通总结 #
总结一下很简单但我就是搞了很久,哈哈.jpg。本流程仅适用于 Congo 主题,其他主题……真的还有其他常用主题没有自带 RSS 吗……总之可以作为参考。
- 在
config/_default/languages.zh-Hans.toml
里(或者你用的任何/全部languages.[语言代码].toml
)的links
数组里加上{ rss = "/index.xml" }
。 - 在
layouts/_default
放上index.rss.xml
,内容直接复制粘贴官方即可。 - 在
assets/icons
里放上rss.svg
。
拓展阅读:以防有自定义 RSS 输出的需要,放下一篇我找到的博文,有助于理解上述的官方代码。