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

las*_*oob 4 markup liquid jekyll

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

 {% for post in site.posts limit:5 %}
     <li>
    < a href="{{ post.url }}">{{ post.title }}</a>
     </li>
   {% endfor %}
Run Code Online (Sandbox Code Playgroud)

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

PS:我在锚标签中包含了一个空格,因此它的代码可读

Joo*_*stS 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 %}
Run Code Online (Sandbox Code Playgroud)

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

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

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


小智 7

更好的选择是使用:

{% 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 %}
Run Code Online (Sandbox Code Playgroud)

它能做什么:

  • 创建一个名为posts 的新变量。
  • 使用 where_exp 过滤器过滤掉与当前页面具有相同 URL 的帖子。
  • 循环这个新变量,限制为 5(最多 5 个帖子)。