2017-10-16 3 views
1

제 지킬 사이트에는 startDate이라는 앞부분에 속성이있는 talks 컬렉션이 있습니다. 내 서문은 다음과 같습니다 그래서 나는 %Y-%m-%d에 실전 문제에 startDate 포맷했습니다 내가 쫓고있는 startDate의가있는 경우 다가오는 회담라는 부분을 보여주고 싶습니다 앞 부분의 날짜를 site.date와 어떻게 비교합니까?

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

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이 더 잘 작동합니다.

자바 스크립트 솔루션은 다음과 같이 목록에 사용자 정의 속성을 추가 할 필요

{% 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 옵션을 사용할 수 있도록, 미래의 날짜로 게시물을 처리하지 않습니다.

페이지 파일은 날짜와 상관없이 지킬로 처리됩니다.