Hexo插件之自动摘要生成器(hexo-excerpt)
Hexo 默认没有对列表页面进行摘要处理,即列表页面会把整个文章内容抛出,很吓人对不对?
除非手动在内容中增加:
<!-- more -->
本插件通过注册generator对所有文章在生成的时候进行处理,如果文章内容含有10个一级html标签,那么取这10个做为列表页面摘要,否则全部显示。
更新 v1.1.0
- 支持传统的分割模式
用到了htmlparser2模块。
核心代码:
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仓库:
{% githubCard chekun hexo-excerpt %}
Keep on hacking!