如何使用 Jekyll 的 liquid 模板循环浏览类别然后在该类别中发布帖子?

How to loop through Categories and then Posts within that category using Jekyll's liquid templates?

我有以下布局:

---
layout: default
---
{% include header.html %}
<ul>
        {% for cat in site.categories %}
        <li>
                {% assign cat_name = cat[0] %}
                <div class="Projects">
                        <h1>{{ cat[0] }}</h1>
                        <h2>{{ cat_name }}</h2>
                        <ul>
                                {% for post in site.categories.cat_name %}
                                <li>
                                        <span class="date">{{ post.date | date: '%Y %b %d' }}</span> - <a href="{{ post.url }}">{{ post.title }}</a>
                                </li>
                                {% endfor %}
                        </ul>
                </div>
        </li>
        {% endfor %}
</ul>

这会尝试查看我网站的类别,然后为每个类别指定类别名称 "cat_name",然后对于每个类别,它使用 {% for post in site.categories.cat_name %} 遍历其中的帖子类别。

这行不通。该行:

<h2>{{ cat_name }}</h2>

有效。例如,它显示 "opinion" 这是类别之一,所以我知道作业有效。 {% for post in site.categories.opinion %} 例如有效。因此,它只是将那个不起作用的变量传递到那里。我该怎么做呢?

我相信您想要的是使用 capture 构建一个使用类别名称的新变量,如此处的 Liquid 文档中所述:https://shopify.github.io/liquid/tags/variable/

{% capture s_c_cat_name%}site.categories.{{cat[0]}}{% endcapture %} ... {% for post in {{s_c_cat_name}} %}

我应该做 {% for post in site.categories[cat_name] %} 而不是 {% for post in site.categories.cat_name %}

这使它对我有用。