是否可以基于两个变量对Jekyll数组进行排序?

是否可以基于两个变量对Jekyll数组进行排序?,jekyll,github-pages,liquid,Jekyll,Github Pages,Liquid,在我网站的首页上,我显示了几篇最新的帖子: {% for post in posts limit: 6 %} ... {% endfor %} 这个很好用 最近我一直在回去编辑一些旧帖子,我希望它们能显示在frontpage的这个列表中 我不想改变他们的约会。相反,我在编辑每篇文章时,都在其中添加了一个新的lastUpdated变量,以及编辑日期 layout: example lastUpdated: 2020-09-07 --- 因此,现在我想修改frontpage上的代码,使其按l

在我网站的首页上,我显示了几篇最新的帖子:

{% for post in posts limit: 6 %}
  ...
{% endfor %}
这个很好用

最近我一直在回去编辑一些旧帖子,我希望它们能显示在frontpage的这个列表中

我不想改变他们的约会。相反,我在编辑每篇文章时,都在其中添加了一个新的
lastUpdated
变量,以及编辑日期

layout: example
lastUpdated: 2020-09-07
---
因此,现在我想修改frontpage上的代码,使其按
lastUpdated
排序(如果有帖子),否则应按
date
排序

我试过这个:

{% assign posts = site.posts
    | reverse
    | sort: "lastUpdated"
    | reverse %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}
{% assign posts = site.posts
    | sort: "lastUpdated or date" %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}
{% assign posts = site.posts
    | sort: "lastUpdated" or "date" %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}
我认为这是可行的,但结果是它将所有编辑的帖子(包含
lastdedited
变量的帖子)排在前面,然后是新创建的帖子。我希望编辑的帖子和新创建的帖子都显示在这个列表中,基于它们的“修改”日期

我试过这个:

{% assign posts = site.posts
    | reverse
    | sort: "lastUpdated"
    | reverse %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}
{% assign posts = site.posts
    | sort: "lastUpdated or date" %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}
{% assign posts = site.posts
    | sort: "lastUpdated" or "date" %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}
但这给了我默认顺序的帖子,大概是因为
“lastdupdated or date”
不是有效的属性

我也试过:

{% assign posts = site.posts
    | reverse
    | sort: "lastUpdated"
    | reverse %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}
{% assign posts = site.posts
    | sort: "lastUpdated or date" %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}
{% assign posts = site.posts
    | sort: "lastUpdated" or "date" %}
{% for post in posts limit: 6 %}
  ...
{% endfor %}
但毫不奇怪,这是一个语法错误


有没有一种简单的方法可以做到这一点,而我却没有呢?

我一写这篇文章,就自己拼凑出一个解决方案,创建两个数组,然后根据
最新更新的
日期
变量将它们合并在一起

{% assign createdPosts = site.posts %}
{% assign updatedPosts = site.posts | sort: "lastUpdated" | reverse %}

{% assign createdIndex = 0 %}
{% assign updatedIndex = 0 %}

{% for i in (1..10) %}
  {% assign createdDate = createdPosts[createdIndex].date | date: "%Y-%m-%d" %}
  {% assign updatedDate = updatedPosts[updatedIndex].lastUpdated | date: "%Y-%m-%d" %}

  {% if createdDate > updatedDate or updatedDate == nil %}
    // HTML for createdPosts[createdIndex]
    {% assign createdIndex = createdIndex | plus:1 %}
  {% else %}
    // HTML for updatedPosts[updatedIndex]
    {% assign updatedIndex = updatedIndex | plus:1 %}
  {% endif %}

{% endfor %}
需要注意的一点是,我无法直接比较
日期
上次更新
,因为我得到了这个错误:
日期与时间的比较失败
,所以我必须将它们都转换为字符串

这感觉相当复杂,所以我可能会回到过去,用
lastUpdated
填充每一篇文章,以保持简单