2014-12-18 4 views
0

저는 Prose와 함께 지킬을 사용하고 있으며 pub_date라는 메타 데이터를 추가로 설정했습니다. 이 (날짜 필드는 아직 지원되지 않습니다) 텍스트 필드로 설정되어 산문에서지킬 문자열로 정렬하기, 날짜 여야 함

사용자는 내가이 값을 가지고 일을 통해 그것을 실행할 수 PUB_DATE에 대한 2015년 1월 23일 같은 것을 입력 날짜를 올바르게 출력하는 방법 (예 : {{ post.pub_date | date: "%b %-d, %Y"}} 작동)

이러한 값을 정렬하려고 시도하지만 문자열로 처리됩니다.

{% assign sorted_posts = (paginator.posts | sort: 'pub_date', 'first') %} 

이 컬렉션을 정렬해야하는 더 좋은 방법이 있습니까? 또는 가치가 날짜처럼 작동하도록 할 수있는 방법이 있습니까?

github 페이지를 사용하여 솔루션을 호스팅하므로 불행히도 지킬에 대한 맞춤 설정을 할 수 없습니다. 마지막에 first이 배열의 첫 번째 게시물을 얻을 것으로 예상되는 경우 나도 몰라

{% assign sorted_posts = paginator.posts | sort: 'pub_date' %} 

{% for post in sorted_posts %} 
    <h1><a href="{{ post.url }}">{{ post.title }}</a></h1> 
    <p class="author"> 
    <span class="date">Pubdate : {{ post.pub_date | date: "%b %-d, %Y"}}</span> 
    </p> 
{% endfor %} 

을하지만,이 경우,는 다음과 같습니다 :

답변

1

따옴표로 묶은 문자열을 정렬 할 때 오류가 발생했습니다. Jekyll :: Post와 Jekyll :: Post의 비교가 실패했습니다.

대신 다음을 사용했습니다.

{% assign sorted_posts = paginator.posts | sort: :pub_date | reversed %} 
{% assign latest_post = sorted_posts | last %} 

<!-- do something with latest post --> 

{% for post in sorted_posts reversed %} 
{% if forloop.first %}<!-- discard the first post -->{% else %} 

<!-- iterate over posts --> 

{% endif %} 
{% endfor %} 

역순으로 두 번 호출해야하는 이유는 100 % 확실하지 않지만 작동합니다.

2

올바른 구문은 pub_date에 의해 당신에게 paginator.posts을 정렬하려면

{% assign sorted_posts = paginator.posts | sort: 'pub_date' | first %} 

---> as we get one post NO loop ! 

<h1><a href="{{ post.url }}">{{ sorted_posts.title }}</a></h1> 
<p class="author"> 
<span class="date">Pubdate : {{ sorted_posts.pub_date | date: "%b %-d, %Y"}}</span> 
</p>