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

时间:2015-01-26 18:06:32

标签: jekyll

在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 %}
 ...

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

2 个答案:

答案 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>