loops - 按修改日期而不是发布日期对 Jekyll 帖子进行排序?

标签 loops sorting yaml jekyll liquid

对于经常更新帖子的人来说,有必要根据最后修改日期 将帖子从新到旧排序,而不是 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/

相关文章:

google-app-engine - Google App Engine 和 ttf 字体无法正常工作

python - PYAML 抛出表示错误

javascript - 如何在 javascript 循环中创建批处理以选择 x 行,然后选择下 x 行,直到完成所有行?

mysql - 在 cgi-bin/test.pl 使用 "ident"时不允许裸字 "strict subs"

linux - Bash 脚本菜单循环

JavaScript:对数组元素进行排序,其中 "truthy"字段值排在前面

algorithm - 搜索算法及其复杂度

javascript - 如何使用无服务器设置 "Stack creation options"?

python - 使用 for 循环从矩阵集合中删除(每个矩阵的)行和列

mysql - 对括号内的值进行排序