Hexo博客首页博文置顶

首页生成代码

要修改hexo博客首页文章的排序,就得修改首页index文件生成的逻辑,在hexo默认插件hero-generator-index里面修改。路径如下:

node_modules/hexo-generator-index/lib/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);
//   var paginationDir = config.pagination_dir || 'page';
//   var path = config.index_generator.path || '';

//   return pagination(path, posts, {
//     perPage: config.index_generator.per_page,
//     layout: ['index', 'archive'],
//     format: paginationDir + '/%d/',
//     data: {
//       __index: true
//     }
//   });
// };


module.exports = function(locals){
  var config = this.config;
  var posts = locals.posts;
    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
    }
  });
};

注释掉的是原来的代码,注释的下面是修改后的逻辑。

在博文title同一级别添加参数top

上面的代码改造增加了top参数,数值越大则排越前,有数值的优先,数值一样大或没有数值的按照文件日期来排序。 示例:

---
top: 1
title: Hexo博文置顶
category: hexo
tags:
  - hexo
  - 博客
keywords:
  - Hexo博文置顶
  - Hexo文章置顶
---