Я использую 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
?
- Если нет, то - могу ли я как-нибудь преобразовать post.date в строку без фильтров или преобразовать current_time в строку и одновременно выполнить сравнение?