6

我对 Jekyll 和 Ruby 非常陌生(但非常兴奋)。

在不使用插件的情况下,我试图找到一种方法来过滤site.related_posts.

例如,我正在阅读带有 titleFoo和 categories的帖子A, B

该网站共包含 3 个帖子:

  1. Foo(类别:A、B)
  2. Bar(类别:A、C、D)
  3. Zoo(类别:B、F)

默认情况下,在 Jekyll 中我们这样做:

{% for post in site.related_posts limit:5 %}
{% endfor %}

但是,上面的代码返回所有 (3) 个帖子。

一篇文章包含许多类别,因此类别应该是一个数组。

如何修改代码并仅返回类别与当前帖子类别相交的那些?

(在这个例子中,我希望代码只返回FooZoo。)

4

2 回答 2

6

我现在没有能力对此进行测试,但是鉴于Liquid 的语法有限,这样的事情会起作用:

{% for post in site.related_posts limit:5 %}
  {% assign match = false %}
  {% for category in post.categories %}
    {% if page.categories contains category %}
      {% assign match = true %}
    {% endif %}
  {% endfor %}
  {% if match %}
    <li><a href="{{ post.url }}">{{ post.title }}</a></li>
  {% endif %}                       
{% endfor %}
于 2012-06-06T03:29:20.000 回答
1

确保每个帖子在 YAML 前文中都有一个类别,然后将其添加到您要显示与 CATEGORY_NAME 相关的帖子的位置:

{% for post in site.categories.CATEGORY_NAME %}
    <li>
        <a href="{{ post.url }}">
            <img src="{{ post.thumbnail }}">
            <p>{{ post.excerpt }}</p>
        </a>
    </li>
{% endfor %}
于 2015-02-07T20:13:24.903 回答