hexo添加_HEXO添加置顶功能

标签下,插入如下代码:

{% if post.top %}

置顶

{% endif %}

简单方法:可能有问题

原理:在Hexo生成首页HTML时,将top值高的文章排在前面,达到置顶功能。

修改Hexo文件夹下的node_modules/hexo-generator-index/lib/generator.js,在生成文章之前进行文章top值排序。

需添加的代码:

posts.data = posts.data.sort(function(a, b) {

if(a.top && b.top) { // 两篇文章top都有定义

if(a.top == b.top) return b.date - a.date; // 若top值一样则按照文章日期降序排

else return b.top - a.top; // 否则按照top值降序排

}

else if(a.top && !b.top) { // 以下是只有一篇文章top有定义,那么将有top的排在前面(这里用异或操作居然不行233)

return -1;

}

else if(!a.top && b.top) {

return 1;

}

else return b.date - a.date; // 都没定义按照文章日期降序排

});

修改完成后,只需要在front-matter中设置需要置顶文章的top值,将会根据top值大小来选择置顶顺序top值越大越靠前。需要注意的是,这个文件不是主题的一部分,也不是Git管理的,备份的时候比较容易忽略。

以下是最终的generator.js内容

'use strict';

var pagination = require('hexo-pagination');

module.exports = function(locals) {

var config = this.config;

var posts = locals.posts.sort(config.index_generator.order_by);

posts.data = posts.data.sort(function(a, b) {

if(a.top && b.top) {

if(a.top == b.top) return b.date - a.date;

else return b.top - a.top;

}

else if(a.top && !b.top) {

return -1;

}

else if(!a.top && b.top) {

return 1;

}

else return b.date - a.date;

});

var paginationDir = config.pagination_dir || 'page';

return pagination('', posts, {

perPage: config.index_generator.per_page,

layout: ['index', 'archive'],

format: paginationDir + '/%d/',

data: {

__index: true

}

});

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值