Jekyll存档页面中的嵌套液体循环无法正常工作.在内部条件内使用外部循环变量

rad*_*att 8 ruby liquid jekyll

我正在使用jekyll静态站点构建器,我在执行以下操作时遇到困难:

{% for category in site.categories %} 
<h2 id = "{{ category[0] }}"> {{ category[0] }} </h2> 
        {% for post in site.categories[{{ category }}] %} 
                <li> <a href="{{ post.url }}"> {{ post.title }}</a></li> 
        {% endfor %} 
<a href="#{{ category[0] }}-ref">&#8617</a> 
{% endfor %} 
Run Code Online (Sandbox Code Playgroud)

我在我的jekyll网站上有一个名为'test'的帖子类别,我可以使用以下内容显示帖子:

{% for post in site.categories.test %} 
                <li> <a href="{{ post.url }}"> {{ post.title }}</a></li> 
{% endfor %} 
Run Code Online (Sandbox Code Playgroud)

但是,我想自动构建一个存档页面,为了做到这一点,我需要从外部循环(访问所有类别的循环)中嵌入类别,并在内部循环中使用它来访问来自该页面的帖子具体类别.我需要做些什么才能让第一个片段按我想要的方式工作?

编辑:或者,是否有另一种方法来获得我想要的结果?

kik*_*ito 14

当你这样做for category in site.categories,

  • category[0] 会给你一个类别名称,
  • category[1] 将为您提供该类别的帖子列表.

我相信这就是Liquid处理哈希迭代的方式.

所以你要找的代码是这样的:

{% for category in site.categories %} 
<h2 id="{{ category[0] }}-ref">{{ category[0] }}</h2>
<ul>
  {% for post in category[1] %} 
    <li><a href="{{ post.url }}">{{ post.title }}</a></li> 
  {% endfor %}
</ul>
<p><a href="#{{ category[0] }}-ref">&#8617;</a></p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我冒昧地修复了一些标记问题 - 我<ul>...</ul>在帖子链接列表周围添加了一个<p>,在最后一个链接附近,后面是一个分号8617,并且还固定id在顶部(缺少-ref部分).

问候!