前言
前段时间,在我博客的评论区中,有几位大佬讨论到了博客要不要加 RSS
的问题,因为我自己平时是不使用 RSS
订阅的,所以就先入为主的认为 RSS
过时了,应该没什么人用了,但看他们的讨论发现似乎用的人还挺多的。
今天突然想起来这个事,因此就也试了一下,发现确实还挺方便、挺好用的,于是乎,今天就赶紧在主题中把这个功能给加上了,顺便也发了一个版本。
本来这是一个很小的功能,加就加了,但由于这里面有个小坑,所以感觉还是需要说明一下,不然估计很多人都不一定会用。
1. 先说用法
事实上,Typecho 默认是支持 RSS
的,只是我之前觉得没用,就没有让它显示出来而已,所以,这次我在主题的配置管理界面加了一个开关,启用显示 RSS
就可以了。
保存设置后,就可以在前台看到 RSS
订阅的图标了。
点击图标就可以跳转到订阅的链接地址,但这样得到的默认订阅文件包含了完整的文章正文,如下图所示:
这至少存在以下三个问题:
RSS
订阅文件通常会包含不止一篇文章,如果每篇文章都比较长的话,那么这个文件就会非常大,少数人的订阅就可能导致网站性能的显著下降;RSS
内容只有结构,没有样式,并且如果文章中的图片做了防盗链,那么,就算内容是完整的,RSS
阅读器看到的也可能是错乱或残缺的;- 最后也是最重要的,作为博主,我们当然希望读者通过
RSS
订阅器收到更新通知后,最终还是能通过点击详情,返回到原站完成阅读。
因此,我们希望 RSS
返回的是摘要,而不是完整的内容,这也是一位参与讨论的大佬提到的。
好在实现这个功能不需要额外的开发,只是需要一些骚操作。首先,需要到 设置 -> 阅读 中,将 聚合全文输出 设置成 仅输出摘要,如下图所示:
其次,到文章编辑页面,在文章中合适的位置加入 <!--more-->
标记,如下图所示:
这样 RSS
中返回的就是 more
前面的一段文字了,返回的越少性能越好。值得注意的是,这种设置同样也会作用于首页的文章列表,也能一定程度上优化性能,但内容返回太少可能会影响美观,所以适中就好,也不需要有太多讲究。
2. 再说原因
为什么需要上面两步这么骚的配置操作呢?我没有找到相关的官方文档说明,因此,又需要翻一翻源码了,不感兴趣的可以跳过。
首先,找到 RSS
的处理类 Feed
,其中有这样一段代码:
大致的意思是,有一个 feedFullText
配置项,如果为真,就返回完整的内容,如果不为真,就看看文本中是否包含 <!--more-->
标记,如果包含了,就返回摘要加原文链接,如果不包含就还是返回完整的内容,这就是为什么需要在文章中加 <!--more-->
标记的原因了。
接下来就是要查查 feedFullText
是干什么的了,通过全文搜索,很容易就可以定位到下面的代码:
通过上下文分析,我们不难确定 feedFullText
指的就是前面提到的 聚合全文输出 设置了。
不得不说,Typecho 作者在很多地方考虑的还是相当严谨的,只是这文档真的是槽点太多了,比如说这里,不翻源码谁能想得到呢?
3. RSS 订阅
RSS
订阅功能启用后,我们还是需要自己看一下效果的,由于我平时不用 RSS
,也不知道哪个订阅器更好用,所以就直接通过浏览器插件找了一个相对好用一点的。
我用的是第二个,其他的我也试了几个,要么用不了,要么需要登录之类的,这个用起来感觉最简单,有兴趣的可以试一下,操作界面也挺干净清爽的,订阅后的效果如下。
这个订阅器还有一个好处就是可以直接在阅读器中浏览原站,这也算是给了我一个小小的惊喜吧,如下图所示:
关于 RSS
阅读器,由于我自己了解的也不是很多,所以更多的内容大家就自己去尝试探索吧!
结语
最后,我想咨询一下,大家平时 RSS
订阅用得多吗?RSS
订阅可能真的是我一直以来过于轻视的功能,貌似老外挺喜欢用这个的,另外,如果有更好用的阅读器,也欢迎推荐一个给我,我也想试着用起来,当然,有兴趣的也欢迎订阅一下我的博客!
评论4
老孙
我也是FreshRSS,然后通过API输出朋友文章
老朱
我后续也搞一个试试
Tabor
服务器部署了FreshRSS,很好用的一个RSS阅读器,推荐试试吧
老朱
回头我试试