2019-02-08 01:15:19更新:
发现vim自动添加修改时间代码有几个打错字的地方,更正了一下。
玩hexo博客也有段时间了,自己写一个原创实现hexo文章按更新时间排序的方法。为什么要写这个呢?因为确实网上找不到!!我找了好久,要么就是不能实现,要么就是不够方便。还需要通过手动添加时间或索引值来进行排序。
我这个方法是全自动,完全不用手工参与,修改完保存。就会自动将最新修改的文章,排到前面。废话不多说,开始搞!
前言
Hexo 首页的文章列表默认是通过文章建立的日期来排序的,也就是最新的文章排在最前面。
但是,有时候我的文章会持续更新,我希望将我更新后的文章放到最前面。但是只要md文件一建立,date:
标签上的值就不会再变更了。
网上有人说hexo有提供updated:
这个参数,只需要将主站配置文件_config.yml
的order_by: -date
修改成order_by: -updated
就可以了,实际上是不完全对的。
1 | index_generator: |
正文
HEXO排序确实是有updated:
这个参数,但是问题的关键不在于这个参数,而是只要你建立了MD博客文件,date:
和updated:
这二个参数都不会按你的修改时间自动更新的。
所以按更新时间排序,只需将date:
或updated:
的时间,改成你修改完成后的时间。然后在_config.yml
主站文件中,使用order_by: -date
还是order_by: -updated
这二种参数中的任意一个都是有效的。
思路
1、手动修改date:
或updated:
的时间。
2、通过快捷键实现自动插入当前时间。
3、自动在保存时,将date:
或updated:
的时间改成当前时间。
手动修改
这个我就不说了,直接在博文中把时间改成当前时间就好了。
快捷键修改
我使用的是vim,所以讲一下vim实现快捷键插入时间的方法。其它编辑器的可以自己查看相关文档。
打开~/.vimrc
的vim配置文件。将下面的代码添加到最后,保存退出。
1 | :nnoremap <F6> "=strftime("%F %H:%M:%S")<CR>gP |
再用vim打开你的文章或者任意文件,按
终级大招:保存后自动修改
vim的强大之处,是他支持很多相关事件。我们这次用到的是autocmd
。
先将_config.yml
主站配置文件中的order_boy:
修改成order_by: -updated
,按updated
这个参数来排序。
编辑~/scaffolds/post.md
模版文件,在文件头加入下面的内容,后保存退出。
1 | title: {{ title }} |
接着打开~/.vimrc
的vim配置文件。将下面的代码添加到最后,保存退出。
1 | autocmd BufWrite,BufWritePre,FileWritePre *.md ks|call LastModified()|'s |
当我们新建md文章时,会自动添加创建时间。而当我们用vim编辑器修改md文章之后,vim保存退出后会自动将updated:
的值,修改成当前时间。这样就完美实现了文章自动排序。快去试试吧!!
当然小伙伴们也可以把快捷键修改的内容也添加进去。这二者是没有冲突的,可以一起使用。