hexo博客文章以更新时间排序

众所周知,我们可以利用hexo等框架发布自己的文章,文章发布后的顺序默认是按照创建时间排的,但当一篇文章更新时其顺序依旧按照创建时间,这一点不太符合一般常识,这里我们要使发布后的文章在博客显示顺序按照更新时间.

这里以hexo的Next主题为例,以下是我的hexo版本信息

$ hexo -v
INFO  Validating config
hexo: 5.4.0
hexo-cli: 4.3.0
os: win32 10.0.19045
node: 14.15.5
v8: 8.4.371.19-node.18
uv: 1.40.0
zlib: 1.2.11
brotli: 1.0.9
ares: 1.16.1
modules: 83
nghttp2: 1.41.0
napi: 7
llhttp: 2.1.3
openssl: 1.1.1i
cldr: 37.0
icu: 67.1
tz: 2020a
unicode: 13.0

这里比较重要的参数有updated_option以及updated.

updated_option

根目录下的配置文件_config.yml中有updated_option这个参数

## updated_option supports 'mtime', 'date', 'empty'
updated_option: 'mtime'

这个参数设置的就是当updated没有在Font-matter中配置时,这个值怎么取,按照官方文章有mtimedate以及empty三个值.

主要看前两个,mtime将文件的修改时间设置为updated并且这是hexo3.0版本后的默认行为,date

表示将文章的Font-matter中的date作为updated,相当于将创建时间和更新时间作为一样的了.而empty就需要自己在文章前加上updated字段,现在网上很多资料要求这么多,但其实新版本hexo已经不用了.以下就是一个Font-matter,说白了就是设置文章的一些信息,这些信息可以从post对象中获取

打开/themes/next/layout/_macro/post.swig文件

可以看到theme.post_meta字段,这就是自己配置的,在/themes/next/_config.yml文件中

从代码中可以看出,created_at字段表示是否显示创建时间,updated_at显示更新时间.这里打算做的设置就是创建和更新日期相同只显示创建如果不同就分别显示,上述设置就能起到这样的作用.

上述操作后就使得能修改文章后post.updated直接就是修改的时间,下面只需要修改排序规则了.

打开\node_modules\hexo-generator-index-pin-top\lib下的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) {
    
     // 两篇文章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; // 都没定义按照文章日期降序排
    });

可以看到如果给文章的Font-matter设置了top字段就能置顶,top越大约在前面.主要注意date值,需要修改为updated.如下图即可.

hexo clean,hexo g && hexo d更新后测试

测试成功.

个人博客

个人网站

欢迎交流

参考资料

  1. Configuration | Hexo
  2. 升级主题后,文章会刷新更新日期,时间为刚才的部署时间 · Issue #60 · YunYouJun/hexo-theme-yun (github.com)

猜你喜欢

转载自blog.csdn.net/aqwca/article/details/130014401