Hexoブログ記事トップ機能追加

1817 ワード

元のWordPressは、トップ記事を直接管理するのに便利で、Hexoは公開日別のソートしか提供していないので、ネット上でいくつかの資料を探して修正するしかありません.
原理: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;
    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
    }
  });
};

元のブログのHexoブログは文章のトップ機能を追加します