在 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>