Hexoブログ記事トップ機能追加
1817 ワード
元のWordPressは、トップ記事を直接管理するのに便利で、Hexoは公開日別のソートしか提供していないので、ネット上でいくつかの資料を探して修正するしかありません.
原理:HexoがトップページHTMLを生成する際,top値の高い文章を前面に並べてトップ機能を実現する.Hexoフォルダの下にある
追加するコード:
修正が完了すると、
以下は最終的なgeneratorです.jsコンテンツ
元のブログの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
}
});
};