Jekyll 如何按日期条件筛选列表?

Jekyll 如何按日期条件筛选列表?,jekyll,liquid,Jekyll,Liquid,我试图通过查找结束日期小于或等于今天日期的所有项目来筛选我的列表 我知道,在液体中,我可以使用where:进行过滤,以查找符合条件的项目。例如,如果我想获得今天会议的列表,我可以: {% assign todays_conferences = (site.conferences | where: 'date_end', today) %} 但是,当我试图获得即将到来的会议时,我不能做同样的事情: {% assign upcoming_conferences = (site.conference

我试图通过查找结束日期小于或等于今天日期的所有项目来筛选我的列表

我知道,在液体中,我可以使用
where:
进行过滤,以查找符合条件的项目。例如,如果我想获得今天会议的列表,我可以:

{% assign todays_conferences = (site.conferences | where: 'date_end', today) %}
但是,当我试图获得即将到来的会议时,我不能做同样的事情:

{% assign upcoming_conferences = (site.conferences | where: 'date_end', ??? | sort: 'date_start') %}
这是因为我不希望一对一地匹配一个值,而是试图根据日期比较来查找项目。我找遍了,找不到路


如何以这种方式筛选列表?我希望我不必求助于按顺序循环并对每一行执行if语句。

来自Jekyll 3.2,而不是使用
where
您可以使用
where\u exp
并使用表达式为真的对象过滤数组:

  {% assign upcoming_conferences = (site.conferences | where_exp: 'date_end', 'date_end < site.time' | sort: 'date_start') %}
{%assign uncoming_conferences=(site.conferences | where_exp:'date_end','date_end

您可以用任何其他有效日期替换
site.time

不幸的是,这并不像预期的那样有效。这是因为您正在比较日期对象和时间对象。我真的以为这也是一样的。这是杰基尔目前正在讨论的问题。有效的解决方案实际上是扩展Jekyll的SiteDrop类并定义@date@Maxcell我在发布和工作之前已经在本地进行了测试,你能举个例子吗?我不太清楚为什么这个特定的项目会这样工作,但是,它们的日期并没有正确地处理成一个干净的Jekyll站点。在这里,您可以看到由于某种原因,其集合中的项是日期对象,而站点是时间对象。我打开了一个新的杰基尔项目,并确认了你的回答,我会说你是正确的,但是,在这个超级独特的原因,它不工作。我会随时通知你的!标记为已接受,因为错误存在于其他地方。