过滤后限制列表中的条目数

Limit number of entries in a list after its filtered

我有一个列表,我需要在其中限制已经被标签过滤的条目数量。因为我需要在条目过滤后 发生限制,所以我不能使用“|limit(10)”,因为它只适用于 for 循环,而不适用于 if 语句。

过滤前限制的问题是它只检查限制告诉它的条目数,所以如果那个条目数不匹配,结果我得到 0 个条目......这不是我的意思寻找,我需要前 10 个具有我需要过滤的标签的条目。

这是我现在拥有的,条目显示,排序作品,过滤作品:

---
pagecategory: 'potato'
---

{%- for review in collections.partner | sort(false, false, 'data.order_on_page') -%}
{% if review.data.tags.includes(pagecategory) %}

<p>{{review.data.title}}</p>

{% endif %}
{%- endfor -%}

条目可以有多个标签,所以我无法检查与 'pagecategory'.

的完全匹配

我搜索了 nunjucks 文档以及整个网络,但我只找到了相反的解决方案 - 在过滤之前限制条目数量 - 这是行不通的。 过滤后如何限制?

如果 data.tags.includes() 是自定义标签过滤器则有效:

eleventyConfig.addFilter('filterByTag', (posts, tag) => posts.filter(p => p.data.tags.includes(tag)))

所以不需要 if 语句:

{%- for review in collections.partner | filterByTag(pagecategory) | limit(settings.list_limit) | sort(false, false, 'data.order_on_page') -%}
 
<p>{{review.data.title}}</p>

{% endif %}
{%- endfor -%}