是否可以基于两个变量对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
填充每一篇文章,以保持简单