2017-04-15 2 views
2

終了日が今日の日付以下のすべてのアイテムを検索してリストをフィルタリングしようとしています。日付条件でリストをフィルタリングする方法は?

私は液体の中で、where:を使ってフィルターをかけて、条件に一致するアイテムを見つけることができます。例えば、私は今日の会議のリストを取得したい場合は、私が行うことができます:

{% assign upcoming_conferences = (site.conferences | where: 'date_end', ??? | sort: 'date_start') %} 

これは、次のとおりです。私は今後の会議を取得しようとすると、

{% assign todays_conferences = (site.conferences | where: 'date_end', today) %} 

しかし、私は同じことを行うことはできません私は値を1対1にマッチさせるのではなく、日付比較に基づいてアイテムを見つけようとしているからです。私は全面を捜し、道を見つけることができませんでした。

この方法でリストをフィルタリングするにはどうすればよいですか?順番にループし、各行でifステートメントを実行することに頼る必要はありません。ジキル3.2から

答えて

4

、代わりにあなたがwhere_expを使用し、その式が真であるオブジェクトの配列をフィルタリングすることができwhereを使用する:

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

あなたは他の有効な日付でsite.timeを置き換えることができます。

+1

残念ながら、これは期待どおりに動作しません。これは、DateオブジェクトとTimeオブジェクトを比較しているためです。私は実際にこれも同じことだと思った。これは現時点でジキルの問題です。実際に動作するソリューションは、JekyllのSiteDropクラスを拡張して@dateを定義することです。 https://github.com/jekyll/jekyll/issues/5302 – Maxcell

+0

@Maxcell投稿する前にローカルでテストしていましたが、うまくいきませんでしたか? – marcanuy

+0

私は、この特定のプロジェクトがなぜそれを行うのかは分かりませんが、彼らの日付はきれいなジキルのサイトのように正しく処理されません。この[写真](http://imgur.com/a/hI6AP)では、何らかの理由でコレクションのアイテムが日付オブジェクトであり、そのサイトがTimeオブジェクトであることがわかります。私は新しいジキルプロジェクトを開いてあなたの反応を確認しましたが、あなたが正しいと言うでしょうが、このユニークな原因ではうまくいきません。あなたが投稿し続けるでしょう! – Maxcell

関連する問題