这是我对帖子列表视图的标记:
<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。我尝试了一些事情,但到目前为止没有任何工作。
答案 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 %}
代码实现: 如果我不是日期组中的第一篇文章,那么我的风格就不同了。
你的逻辑是 如果我不是三个帖子(或更多)的日期组中的第一篇帖子,那么我的风格就不同了。
三个或更多帖子的日期组意味着您已经知道您拥有多少“相同日期帖子”并使代码更加复杂。