在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
如果我在页面循环中添加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 %}
...
我想避免让一个有很多页面的类别占用太多空间。有什么想法吗?
答案 0 :(得分:2)
您需要循环所有页面,并计算您已找到的正确类别的数量:
{% 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
进行了测试,因为我没有一个Jekyll项目,其中页面有标签/类别)< / em>的
增加变量的语法看起来有点难看,但显然increasing numeric variables in Liquid isn't that easy (这是我第一次亲自尝试)。
答案 1 :(得分:0)
您应该查看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>