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

问题描述 投票:4回答:2

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

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

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

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

jekyll liquid markup
2个回答
7
投票

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

{% 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号帖子


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个帖子)。
© www.soinside.com 2019 - 2024. All rights reserved.