Jekyll,Liquid - 获得属于category1和category2的帖子

时间:2016-01-26 21:49:34

标签: jekyll liquid

我为“Tutorials”类别中的所有帖子制作了一个概述页面,如下所示:

  <ul class="post-list">
    {% for post in site.categories.Tutorials  %}
      <li>
        <span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}</span>

        <h2>
          <a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a>
        </h2>
        {{ post.excerpt }}
      </li>
    {% endfor %}
  </ul>

但是现在我想为包含“Tutorials”类别和“German”类别的帖子制作一个索引页面。但是如何?

我想在这个概述页面中发布这个帖子:

---
layout: post
title: 'German tutorial'
categories: [Tutorials, German]
---

我不希望在此概述页面中发布的帖子是带有这样的标题的帖子:

---
layout: "post"
title: "English totorial"
categories: [Tutorials, English]
---

我试过例如:

{% for post in site.categories.Tutorials & site.categories.German  %}

但这不起作用......

如果这样做更容易,我很容易切换到标签而不是类别。

1 个答案:

答案 0 :(得分:1)

获取第一个类别数组:site.categories.Tutorials然后对其中的德语类别帖子进行排序:

{% assign tutorials = site.categories.Tutorials %}
{% comment %}Creates an empty array{% endcomment %}
{% assign germansTutos = "" | split: "/" %}
{% for p in tutorials %}
  {% if p.categories contains "German" %}
    {% assign germansTutos = germansTutos | push: p %}
  {% endif %}
{% endfor %}
<ul>
{% for post in germansTutos %}
  <li>{{ post.title }}</li>
{% endfor %}
</ul>

您还可以简单地为帖子分配教程类别和lang变量,并根据where过滤器的功能对其进行过滤。

例如:

---
layout: post
title:  "Post 1"
date:   2016-01-27 00:29:55 +0100
categories: Tutorials
lang: ge
---
Post one

然后您可以按照以下方式对帖子进行排序:

{% assign tutorials = site.categories.Tutorials %}
{% assign germanTutos = tutorials | where: 'lang', 'ge' %}
<ul>
{% for post in germanTutos %}
  <li>{{ post.title }}</li>
{% endfor %}
</ul>