从Jekyll的最近帖子查询中排除当前帖子?

时间:2016-11-05 21:31:55

标签: jekyll liquid markup

所以最近的帖子查询了最近5篇帖子。

 {% for post in site.posts limit:5 %}
     <li>
    < a href="{{ post.url }}">{{ post.title }}</a>
     </li>
   {% endfor %}

然而,这也显示了当前的一个,如果它是5个最新帖子中的一个。我试图包含一个检查URL的if语句,但是如何在限制变量中添加+1?

P.S。:我在锚标记中包含了一个空格,因此它可以作为代码

2 个答案:

答案 0 :(得分:6)

检查网址应该有效。只需循环六个项目,并在找不到匹配项时隐藏最后一个项目。

{% for post in site.posts limit:6 %}
  {% if post.url != page.url %} 
    {% if forloop.index < 6 or found %}
      <li>
        <a href="{{ post.url }}">{{ post.title }}</a>
      </li>
    {% endif %}
  {% else %}
    {% assign found = true %} 
  {% endif %}
{% endfor %}

代码的作用(一步一步):

  • 循环超过6个帖子
  • 检查帖子是否不是当前页面/帖子
  • 如果您正在循环/迭代1到5或者您已找到当前项目*
  • 然后显示你循环/迭代的帖子

*允许你循环/迭代第6号帖子

答案 1 :(得分:2)

一个更好的选择是使用:

{% assign posts = site.posts | where_exp:"post","post.url != page.url" %}
{% for post in posts limit:5 %}
  <li>
    <a href="{{ post.url }}">{{ post.title }}</a>
  </li>
{% endfor %}

它的作用:

  • 创建一个称为posts的新变量。
  • 使用where_exp过滤器过滤出与当前页面具有相同URL的帖子。
  • 将此新变量设置为5个(最多5个帖子)。