对于Liquid中的循环:使用reverse和limit:1

时间:2012-09-17 18:59:58

标签: jekyll liquid

我正在使用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,但进度到此结束。

感谢您的帮助,如果这还不够,我很乐意提供更多细节。

2 个答案:

答案 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,排序(和反向)非常重要,然后才能以限制循环。