在 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)。
这里是最近的帖子查询,包含最后 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)。