踩坑

配置了update_option: mtimeorder_by: -updated,实现文章按最后修改日期排序,但每次部署完发现都会有个hello world不合时宜地出现在最上面😓 打开发现大部分文章的修改日期都变成了同一个——部署的日期,而自己加了updated参数的不受影响,疑似git本身对文件修改日期的判定机制导致。

于是乎,给每个文章都添加了updated参数,例如

1
2
3
4
5
---
title: Hello World
date: 2023-01-01 00:00:00
updated: 2023-02-01 00:00:00
---

勉强解决,但每次都手动添加太麻烦了。

完美解决方案

修改格式模板

在文章模板中添加updated参数到Front-matter(修改/scaffolds/post.md),如下

1
2
3
4
5
6
---
title: {{ title }}
date: {{ date }}
tags:
updated: {{ date }}
---

在自动部署脚本加上对时间的矫正

加上一行git ls-files -z | while read -d '' path; do touch -d "\$(git log -1 --format="@%ct" "\$path")" "\$path"; done来矫正修改日期即可。

已加入本站自动部署workflow | 无愚の日记 (binarydev.top)),可参考。

参考文章:

hexo自动更新文章修改时间 - yyyz - 博客园 (cnblogs.com)

Hexo GitHub Action CI配置(解决文章修改时间问题) | Calvin Cui (unparalleled-calvin.github.io)