迭代帖子列表并比较日期

时间:2014-07-27 22:32:39

标签: jekyll liquid

这是我对帖子列表视图的标记:

<ul class="eventlist">
  {% for post in site.posts reversed %}
    <li class="eventlist-element">
      {% if post.href %}
        <a class="eventlist-element__link" href="{{ post.href }}">
      {% else %}
        <a class="eventlist-element__link" href="{{ post.url | prepend: site.baseurl }}">
      {% endif %}
          <time datetime="{{ post.date | date: "%Y-%m-%d" }}"class="eventlist-element__date">
            <span class="eventlist-element__date-day">{{ post.date | date: "%d" }}</span>
            <span class="eventlist-element__date-day-name">{{ post.date | date: "%a" }}</span>
          </time>
          <div class="eventlist-elemnt-infowrap">
            <span class="eventlist-element__title">{{ post.title }}</span>
            <span class="eventlist-element__venue">{{ post.venue }}</span><span class="eventlist-element__time">{{ post.time }}</span><span class="eventlist-element__ticket">{{ post.ticket }}</span>
          </div>
          <span class="eventlist-element__bullets"></span>
        </a>
    </li>
  {% endfor %}
</ul>

我想迭代所有帖子并想要比较post.date。如果我们在同一天让我们说3个帖子,那么我希望标记a用于帖子1,用于帖子2和3标记b。我尝试了一些事情,但到目前为止没有任何工作。

2 个答案:

答案 0 :(得分:0)

尝试以下几点:

{% assign previousDate = site.date %}
{% for post in site.posts %}
   {% if post.date == previousDate %}
       // some other class
   {% endif %}
   {% assign previousDate = post.date %}    
{% endfor %}

基本上,您将上一篇文章的日期分配给某个变量,并将其与当前的帖子日期进行比较。如果它们相同,则应用不同的样式。不确定你是否可以按原样使用日期,它还包含小时,分钟,......?如果是这样的话,你会想要过滤它只能出去年,月,日。

答案 1 :(得分:0)

一些代码:

{% assign defaultStyle   = 'defaultStyle' %}
{% assign alternateStyle = 'alternateStyle' %}
{% assign counter = 1 %}

{% for post in site.posts %}

    {% if previousPostDate %}

        {% if previousPostDate == post.date %}
            {% capture counter %}{{ counter | plus: 1 }}{% endcapture %}
        {% else %}
            {% assign counter = 1 %}
        {% endif %}

    {% endif %}

    {% if counter | to_number > 1 %}
        {% assign defaultStyle = alternateStyle %}
    {% endif %}

    <div class="{{ defaultStyle }}">
        <h3>{{ post.title }}</h3>
        <p>{{ post.date }}</p>
    </div>

    {% assign previousPostDate = post.date %}

{% endfor %}

代码实现: 如果我不是日期组中的第一篇文章,那么我的风格就不同了。

你的逻辑是 如果我不是三个帖子(或更多)的日期组中的第一篇帖子,那么我的风格就不同了。

三个或更多帖子的日期组意味着您已经知道您拥有多少“相同日期帖子”并使代码更加复杂。