我正在使用Jekyll构建一个简单的博客,而我正试图找出这个问题。
该网站的索引页面的目的是提供一篇最新的文章,其结构如下所示(原谅这个混乱):
{% for post in site.posts reversed limit:1 %}
<div class="post">
<div class="post-inner">
<h3 class="posttitle"><a href="{{ post.url }}">{{ post.title }}</a></h3>
<p class="postdate">{{ post.date | date: "%d %B %Y" }}</p>
{{ post.content }}
<a href="{{ post.url }}#disqus_thread" class="commentLink"></a>
</div>
</div>
{% endfor %}
当限制不受限制时(即不存在或设置为数组的长度),上述模板完全正常。似乎只有当限制实际限制循环忽略的结果时才会反转。
我已经尝试清除浏览器缓存,这是让它无限制地工作的原因:1,但进度到此结束。
感谢您的帮助,如果这还不够,我很乐意提供更多细节。
答案 0 :(得分:27)
Jekyll实际上为你输出了什么?
根据我的理解,反向过滤器最后应用。因此,假设你发布了8月的前15天,并且还说你做了类似的事情:
{% for post in site.posts limit:5 %}
{{ post.content }}
{% endfor %}
您发布的数组将按以下模式排序
[8月15日,8月14日,8月13日,8月12日,8月11日]
然后如果你扭转了它
{% for post in site.posts reversed limit:5 %}
{{ post.content }}
{% endfor %}
您发布的数组将按以下模式排序
[8月11日,8月12日,8月13日,8月14日,8月15日]
尽管如此,我对你为什么不使用
感到有些困惑{% for post in site.posts limit:1 %}
答案 1 :(得分:7)
通过限制自定义字段进行自定义反向排序:
{% assign items = site.items | sort: 'some_field' | reverse %}
{% for item in items limit:10 %}
<li><a href="{{ item.url }}">{{ item.title }}</a></li>
{% endfor %}
分配给某些自定义var,排序(和反向)非常重要,然后才能以限制循环。