按文章更新时间排序, 这里需要注意的是排序值的KEY不能为updated, 要不然就是使用文章更新时间来排序了
配置
next.yml
1
2
3post_meta:
updated_at: false
updated_diff: false编辑
themes/next/layout/_macro/post.swig
, 在<span class="post-time"></span>
后添加以下代码1
2
3
4
5
6
7
8{% if post.updateTime %}
<span class="post-meta-divider">|</span>
<span class="post-meta-item-icon">
<i class="fa fa-calendar-check-o"></i>
</span>
<span class="post-meta-item-text">{{ __('post.modified') }}:</span>
<time title="{{ __('post.modified') }}" itemprop="dateModified" datetime="{{ moment(post.updateTime).format() }}">{{ date(post.updateTime, config.date_format) }}</time>
{% endif %}修改
hexo
文件夹下的node_modules/hexo-generator-index/lib/generator.js
, 在生成文章之前进行文章updateTime
值排序1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49;
var pagination = require('hexo-pagination');
module.exports = function(locals) {
var config = this.config;
/*******START*******/
//var posts = locals.posts.sort(config.index_generator.order_by);
var paginationDir = config.pagination_dir || 'page';
var path = config.index_generator.path || '';
var posts = locals.posts;
posts.data = posts.data.sort(function(a, b) {
let aUpdateTime = a.updateTime ? (new Date(a.updateTime)).getTime() : 0;
let bUpdateTime = b.updateTime ? (new Date(b.updateTime)).getTime() : 0;
if (aUpdateTime && bUpdateTime) {
// updateTime 一样, 则按照文章日期降序, 否则按照 updateTime 降序
return aUpdateTime === bUpdateTime ? b.date - a.date : bUpdateTime - aUpdateTime;
}
// 更新时间不能大于发布时间
else if (aUpdateTime && !bUpdateTime) {
return aUpdateTime > b.date ? -1 : 1;
}
else if (!aUpdateTime && bUpdateTime) {
return bUpdateTime > a.date ? 1 : -1;
}
// 按照文章日期降序
else {
return b.date - a.date;
}
});
/*******END*******/
return pagination(path, posts, {
perPage: config.index_generator.per_page,
layout: ['index', 'archive'],
format: paginationDir + '/%d/',
data: {
__index: true
}
});
};
# 调用方式
---
title: Hexo 自定义文章排序规则
date: 2018-04-24 14:18:20
updateTime: 2018-04-27 09:46:00
categories: Hexo
---清除
hexo
缓存1
hexo clean