在 Jekyll 中,如何获取具有特定标签的所有页面并将结果限制为 3?

In Jekyll, how can I get all pages with a specific tag and limit the results to 3?

在 Jekyll 中,我想创建一个显示各种页面类别的主页。对于每个类别,我只想显示 5 页。如何将页面结果限制为每个类别仅 5 个?

这是我目前拥有的其中一个类别部分的代码:

<ul>
{% for page in site.pages %}
{% for tag in page.tags %}
{% if tag == "news" %}
<li><a href="{{ page.permalink | prepend: site.baseurl }}">{{page.title}}
</a></li>
<div class="summary">{{page.summary}}</div>
{% endif %}
{% endfor %}
{% endfor %}
</ul>enter code here

如果我在 for page 循环中添加 limit:5,它只会查看 5 个页面——它不会查看带有这些标签的 5 个页面:

<ul>
{% for page in site.pages limit:5 %}
{% for tag in page.tags %}
...

如果我在 page.tags 行添加 limit: 5,它不会执行任何操作:

 <ul>
 {% for page in site.pages %}
 {% for tag in page.tags limit:5 %}
 ...

我想避免一个有很多页面的类别占用太多space。有什么想法吗?

您需要循环所有页面,并计算您已经找到的正确类别的页面数量:

{% assign counter = '0' %}
{% for page in site.pages %}
{% for tag in page.tags %}
{% if tag == "news" and counter < '5' %}
    {% capture counter %}{{ counter | plus:'1' }}{% endcapture %}
<li><a href="{{ page.permalink | prepend: site.baseurl }}">{{page.title}}
</a> ({{ counter }})</li>
<div class="summary">{{page.summary}}</div>

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

(在我的博客上使用 site.posts 而不是 site.pages 进行了测试,因为我没有 页面 有tags/categories)

增加变量的语法看起来有点难看,但显然increasing numeric variables in Liquid isn't that easy (这是我第一次尝试).

你应该看看 group_by,它可以与 assign 标签一起使用。

<ul>
  {% assign authors = site.posts | group_by: "author" %}
  {% for author in authors %}
    <li>{{ author.name }}<ul>
      {% for page in author.items limit: 5 %}
        <li>{{ page.title }}</li>
      {% endfor %}
    </ul></li>
  {% endfor %}
</ul>