Hexo插件之自动摘要生成器(hexo-excerpt)

Hexo 默认没有对列表页面进行摘要处理,即列表页面会把整个文章内容抛出,很吓人对不对?

除非手动在内容中增加:

1
<!-- more -->

本插件通过注册generator对所有文章在生成的时候进行处理,如果文章内容含有10个一级html标签,那么取这10个做为列表页面摘要,否则全部显示。

更新 v1.1.0

  • 支持传统的分割模式

用到了htmlparser2模块。

核心代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
let nodes = [];

let parser = new htmlparser.Parser(new htmlparser.DomHandler((err, dom) => {
if (!err) {
nodes = dom;
}
}), {
decodeEntities: false
});

parser.write(post.content);
parser.done();

if (nodes.length > 10) {
let stopIndex = 0;
for (let i = 0; i < nodes.length; i++) {
if (nodes[i].type === 'tag') {
if (++stopIndex > 9) {
break;
}
}
}

nodes = nodes.slice(0, stopIndex);
post.excerpt = (nodes.map(node => domutils.getOuterHTML(node))).join('');
}

Github仓库:

Keep on hacking!

本文使用「CC BY 4.0」创作共享协议,只要在使用时署名,您可以对本文进行转载、节选、混编、二次创作,并允许商业性使用。
本文为作者原创,如果您认为本文对您有帮助,欢迎打赏作者