2017-10-16 7 views
1

私のJekyllサイトでは、という正面のプロパティを持つコレクションtalksがあります。前記事の日付をsite.dateと比較するには

--- 
startDate: 2017-10-29 
--- 

の後にある任意のstartDate sが存在する場合、私は会談というセクションを表示したい:私の前の問題は、次のようになりますので、私は、%Y-%m-%dに実際の前の問題でstartDateをフォーマットしましたsite.time。これまでのところ、私はこの持っている:forループでは

{% assign currentDate = site.time | date: "%Y-%m-%d" %} 

を、私はtalk.startDatecurrentDateを印刷して、それぞれの値を示し、それらは同じメートにいることができます。しかし私ができないことは、それらを比較することです。

{% assign upcoming = site.talks | where_exp: "startDate", "startDate > currentDate" %}` 

{% if upcoming.size > 0 %} 
    <h1>Upcoming talks</h1> 
    ... 
{% endif %} 

をしかし、私は(upcomingが、どこstartDate < currentDateと同じである)の両方upcomingpastためsizeを得るとき、彼らは両方これは日付が上がらない私に語っ0に評価する:私は本当にこれを実行したいのですが実際には私のフィルタで比較していません。

誰でも私がこれを理解するのを助けることができますか?

答えて

1

こちらの記事をお読みください。In Jekyll, how to show "posts from last week"彼らは同じことをやろうとします(過去と未来の間にのみ)。あなたがしようとしていることは、ジキルが毎日構築する必要があることに注意してください。これはあまり現実的ではありません。 javascript solutionがうまくいくでしょう。

javascriptのソリューションは、このように、あなたのリストにカスタム属性を追加する必要があります:

{% for talk in upcoming %} 
    <li date="{{ talk.startDate }}">{{ talk.title }}</li> 
{% endfor %} 

を次に、古い記事を非表示にするjQueryの(またはバニラJS)を使用します。

// loop through all list items with a date 
$('li[date]').each(function(){ 
    // create a postDate in a date object 
    var startDate = new Date($(this).attr('date')); 
    // compare dates and hide old posts 
    if(startDate<Date.now()) $(this).hide(); 
}); 
+0

サイトを毎日cronジョブで構築できるので、最初の提案と同様に使用します。ありがとう。 – i7nvd

+0

@ i7nvdちょっと好奇心から:どのようにあなたのcronを実行/設定しますか? – JoostS

0

暗黙の質問は:どのようにジキルまたは液体の日付を比較するには?これはに対して比較することができ、整数の変数を作成します

{%- assign buildTimeInSecondsInEpoch = site.time | date: "%s" | plus: 0 -%} 

これは私が思い付くことができ、最も簡単な解決策でした。たとえば:

{%- assign pagesForPublishing = "" | split: "" -%} 
{%- for ape in site.pages -%} 
    {%- assign pageDateInSecondsInEpoch = ape.date | date:"%s" | plus: 0 -%} 
    {%- if pageDateInSecondsInEpoch < buildTimeInSecondsInEpoch -%} 
     {%- assign pagesForPublishing = pagesForPublishing | push: ape -%} 
    {%- endif -%} 
{%- endfor -%} 

はまた、ジキルは、これは(ビルドやサーブ) --futureオプションを使用可能にし、将来の日付で記事を処理しません。

ページファイルは日付にかかわらずjekyllで処理されます。

関連する問題