我正在尝试输出特定作者的博客帖子列表。我试过这个Jekyll过滤器:
{% for post in (site.posts | where:"author", "mike") %}
{{ post.title }}
{% endfor %}
但它会输出每一篇文章。我不清楚我做错了什么。
答案 0 :(得分:10)
假设你的帖子作者在你面前,就像这样:
---
author: toto
...
---
如果你想要发表作者= = toto的最后一篇文章,那就做:
{% assign counter = 0 %}
{% assign maxPostCount = 2 %}
<ul>
{% for post in site.posts %}
{% if post.author == 'toto' and counter < maxPostCount %}
{% assign counter=counter | plus:1 %}
<li>{{ counter }} - {{ post.title }}</li>
{% endif %}
{% endfor %}
</ul>
Et hop!
编辑: 另一个使用where过滤器而不是if子句的解决方案:
{% assign posts = site.posts | where: "author", "toto" %}
{% assign counter2 = 0 %}
{% assign maxPostCount2 = 3 %}
<ul>
{% for post in posts %}
{% if counter2 < maxPostCount2 %}
{% assign counter2=counter2 | plus:1 %}
<li>{{ counter2 }} - {{ post.title }}</li>
{% endif %}
{% endfor %}
</ul>
重新编辑:Justin是对的,我不需要我的两个变量(counter2和maxPostCount2),我可以使用Liquid for loop limit:n 选项。
{% assign posts = site.posts | where: "author", "toto" %}
<ul>
{% for post in posts limit:3 %}
<Ol>{{ post.title }}</ol>
{% endfor %}
</ul>
更好!
答案 1 :(得分:2)
您需要先为过滤的项目assign
执行<{1}}
{% assign posts = site.posts | where:"author", "mike" %}
{% for post in posts %}
{{ post.title }}
{% endfor %}
答案 2 :(得分:0)
似乎过滤器只能在输出标签内使用({{
和}}
包围的过滤器。这意味着您可以使用以下内容:
{{ site.posts | where "author", "mike" }}
但你不能按照你的方式使用它。