Jekyll for循环 - 多个数组

时间:2012-07-22 11:25:21

标签: jekyll

在Jekyll,我有一个小型博客系统,分为两类:blogportfolio。我有两个页面将为这些类别呈现帖子,其中for循环看起来像这样:

{% for post in site.categories['blog'] %}
…
{% endfor %}

在我的主页上,我想显示blog类别中的最新帖子。但是,我希望我的博客也能包含我的一些摄影作品 - 这些作品会以帖子形式存在,但大多数时候它们没有标题或正文内容 - 它们只是一个图像。我不希望这些帖子显示在主页上。

实际上,我只想在主页上显示最新的博文,不包括所有摄影帖子。我正在考虑我的选择:

  1. 使用两个类别:blogphotos。但是,如何让我的博客页面显示这两个类别的帖子?我实际上需要合并数组site.categories['blog']site.categories['photos'],并将它们放入for循环 - 但这可能吗?
  2. 保留一个类别:blog,但在其他方面,排除没有标题的帖子出现在主页上。但你是怎么做到的?
  3. 这可能吗?

2 个答案:

答案 0 :(得分:7)

在博客页面上,您可以使用:

{% for post in site.posts %}
…
{% endfor %}

检索所有帖子并全部显示。如果您想要过滤更多(例如,您有第三个类别,您不希望在此页面上显示:

{% for post in site.posts %}
    {% if post.categories contains 'post' or post.categories contains 'photos' %}
       ...
    {% endif %}
{% endfor %}

答案 1 :(得分:0)

这里一个简单的方法是使用Jekyll categories

将您的帖子放入_posts文件夹的子目录中:

_posts/
    blog/
        post.md
    photos/
        photo.md

然后在index.html或其他任何地方,您可以按如下方式引用单独的类别:

<h1>Blog</h1>

{% for post in site.categories.blog %}
    {{ post.title }}
{% endfor %}

<h2>Photos</h2>

{% for photo in site.categories.photos %}
    {{ photo.title }}
{% endfor %}

您可以使用site.posts访问所有帖子。

对于相关的github问题“Multiple _posts目录”,请参阅 https://github.com/jekyll/jekyll/issues/1819#issuecomment-30441840