我正在使用Jekyll 3.8。我的帖子包含date
个属性集。其中有些包含过去的值(例如2001-01-01
),有些包含将来的值(例如2109-12-31
)。
我想要实现的是仅显示过去的帖子(因此它们的日期小于now
)。现在,我设法使用:
{% capture current_time %}{{'now' | date: '%s'}}{% endcapture %}
{% for post in site.posts %}
{% capture post_time %}{{post.date | date: '%s'}}{% endcapture %}
{% if post_time >= current_time %}
DISPLAY THE ITEM
{% endif %}
{% endfor %}
但是效率不高。
我想使用where_exp过滤器来完成它。现在-有可能吗? 我的草稿如下:
{% capture current_time %}{{'now' | date: '%s'}}{% endcapture %}
{% assign filtered_posts = site.posts| where_exp:"post","post.date | date: '%s' >= current_time" %}
{% for post in filtered_posts %}
DISPLAY THE ITEM
{% endfor %}
但是我收到Liquid Exception: Liquid error (line 5): comparison of Time with String failed in source.md
。
我想问题出在| date: '%s'
中的{% assign filtered_posts = site.posts| where_exp:"post","post.date | date: '%s' >= current_time" %}
。
因此:
where_exp
表达式中使用过滤器(管道)吗? 答案 0 :(得分:1)
由于比较表达式中的管道,where_exp
引发错误,因此我无法重现您的错误。
尽管如此,您可以将作为Time对象的post.date与site.time(生成时间)进行比较,以获取过去的帖子。
{% assign filtered_posts = site.posts | where_exp: "post","post.date <= site.time" %}