在 Jekyll 中从最近 post 的查询中排除当前 post?

Exclude current post from recent posts query in Jekyll?

这里是最近的帖子查询,包含最后 5 个帖子。

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

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

P.S.: 我在锚标签中包含了一个 space 所以它的可读性代码

检查 url 应该可以。只需循环六个项目并在找不到匹配项时隐藏最后一个项目。

{% 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 posts
  • 检查 post 是否不是当前的 page/post
  • 如果您在 loop/iteration 1 到 5 或者您找到了当前项目*
  • 然后显示post你loop/iterate超过

*允许您 loop/iterate 超过 post 数字 6

更好的选择是使用:

{% 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的post。
  • 循环这个新变量,限制为 5(最多 5 posts)。