对于经常更新帖子的人来说,有必要根据最后修改日期 将帖子从新到旧排序,而不是 Jekyll 默认的按发布日期排序。
似乎没有简单的方法来完成这个。我已经阅读并测试了几乎所有的方法。
以下是有效的方法(部分符合预期):
使用了这个 gem https://github.com/gjtorikian/jekyll-last-modified-at但现在我必须在每个帖子的前题中手动输入 last_modified_at
以便 Jekyll 使用此循环对帖子进行排序:
{% assign sorted_posts = site.posts | sort: "last_modified_at" | reverse %}
{% for post in sorted_posts %}
<!-- CODE HERE -->
{% endfor %}
问题是在每个帖子中都有 last_modified_at
,因为它会阻止插件在我每次按 CTRL+S 保存帖子时自动设置该值。
有什么方法可以使它自动化吗?
最佳答案
编辑:它只适用于开发,不确定为什么它在生产中也不起作用。每当我部署网站时,它都会用相同的日期更新所有帖子。
我非常感谢 hooks 和这篇文章:https://stackoverflow.com/a/36769049
步骤:
- 在名为
hook-add-last-modified-date.rb
的_plugins
文件夹中创建了新文件 将此代码粘贴到其中并保存:
Jekyll::Hooks.register :posts, :pre_render do |post| # get the current post last modified time modification_time = File.mtime( post.path ) # inject modification_time in post's datas. post.data['last-modified-date'] = modification_time end
当我在帖子上按 CTRL+S 现在会发生两件事:a) 在我有
{{ post.last-modified-date | 的地方更新上次修改日期date_to_xmlschema }}
和 b) 它将它颠簸到索引页面上我的帖子的顶部,因为它是按该变量排序的。
爱你们!
关于loops - 按修改日期而不是发布日期对 Jekyll 帖子进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48245460/