按修改日期而不是发布日期排序Jekyll帖子?

时间:2018-01-13 23:59:08

标签: loops sorting yaml jekyll liquid

对于经常更新帖子的人,有必要根据上次修改日期将帖子从新旧排序,而不是按照发布日期对Jekyll的默认排序。

似乎没有简单的方法来实现这一目标。我已经阅读并测试了所有方法。

这是有效的(部分符合预期):

使用了这个gem https://github.com/gjtorikian/jekyll-last-modified-at,但是现在我必须在每个帖子的前面部分手动输入scripts: { ... "test": "mocha $(find . -name '*.test.js')" ... } ,以便Jekyll使用这个循环对帖子进行排序:

last_modified_at

问题是每个帖子中都有{% assign sorted_posts = site.posts | sort: "last_modified_at" | reverse %} {% for post in sorted_posts %} <!-- CODE HERE --> {% endfor %} ,因为每当我点击CTRL + S保存帖子时,它就会停止插件自动设置该值。

有什么方法可以让我自动化吗?

1 个答案:

答案 0 :(得分:1)

编辑:它只适用于开发,不确定为什么它也不适用于生产。每当我部署网站时,它都会以相同的日期更新所有帖子。

我非常感谢钩子和这篇文章:https://stackoverflow.com/a/36769049

步骤:

  • 在名为_plugins
  • hook-add-last-modified-date.rb文件夹中创建了新文件
  • 将此代码粘贴到其中并保存:

    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)它碰撞它到了索引页面上的帖子顶部,因为它按该变量排序。

爱你们!