硬改hexo-generator-feed使某些文章不被rss推送

前言

由于鄙人博客的rss加入了北邮人博客圈这么大佬的博客圈,所有的博客更新都会被整合。由于我太菜了,有些文章实在是拿不出手,放上去十分丢人,但是想作为自己的积累写下来,老是扔在草稿区也不是个事,所以就有了这么个想法。

前排提醒: 实现方式十分不优雅,有更好的方式还请各位指教

实现方式

RSS的文件生成应该和hexo是一个模式–模板渲染,直接在node_modules\hexo-generator-feed找到这个包

hexo-generator-feed结构

负责渲染每个文章的是

{% for post in posts.toArray() %}

存储需要渲染文章的是posts

在这个目录下搜索posts,在lib\generator.js找到

1
2
3
4
5
6
7
8
9
10
11
12
// @ line: 28
posts = posts.filter(function(post) {
return post.draft !== true;
});
// @ line: 40
var xml = template.render({
config: config,
url: url,
icon: icon,
posts: posts,
feed_url: config.root + feedConfig.path
});

filter函数是筛选器,大致用法:

1
2
3
4
5
var arr = ['A', '', 'B', null, undefined, 'C', '  '];
var r = arr.filter(function (s) {
return s && s.trim(); // 注意:IE9以下的版本没有trim()方法
});
r; // ['A', 'B', 'C']

修改如下:

1
2
3
4
// @ line: 28
posts = posts.filter(function(post) {
return post.draft !== true && post.DontInRss !== true;
});

这下,一会后不想加入RSS的文章只需要在文章属性上加上DontInRss: true就可以了。

瑟瑟发抖

作为一个在大佬之间瑟瑟发抖的萌新,只能瑟瑟发抖了。。。