Jekyll, Liquid - 获取属于类别 1 和类别 2 的帖子

Jekyll, Liquid - get posts belonging to category1 and category2

我为类别 "Tutorials" 中的所有 post 制作了一个概览页面,如下所示:

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

但现在我想为 post 生成一个包含类别 "Tutorials" 和类别 "German" 的索引页。但是怎么办?

我想在这个概览页面中的post是这个:

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

我不希望出现在该概览页面中的帖子是 post 带有 header 的帖子,如下所示:

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

我试过例如:

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

但这行不通...

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

获取第一个类别数组: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>

您还可以简单地为您的帖子分配一个教程类别和一个语言变量,并通过 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>