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

时间:2011-04-15 03:26:50

标签: 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 %} 

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

{% for post in site.categories.test %} 
                <li> <a href="{{ post.url }}"> {{ post.title }}</a></li> 
{% endfor %} 

但是,我想按顺序自动构建存档页面 要做到这一点,我需要从外部循环(循环中)嵌入类别 访问所有类别),并在内部循环中使用它 访问该特定类别的帖子。我需要做什么才能得到 我想要的第一个片段是什么?

编辑:或者,是否有其他方法可以获得我想要的结果?

3 个答案:

答案 0 :(得分: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 %}

我冒昧地修复了一些标记问题 - 我在帖子链接列表周围添加了<ul>...</ul>,在最后一个链接周围添加了<p>,在{{1}后面添加了一个分号}},并修复了8617在顶部(缺少id部分)。

问候!

答案 1 :(得分:1)

怎么样......

{% for category in site.categories %}
<h2 id = "{{ category[0] }}"> {{ category[0] }} </h2>
        <ul>
        {% for post in site.posts %}
            {% if post.category == category[0] %}
                 <li> <a href="{{ post.url }}"> {{ post.title }}</a></li>
            {% endif %}
        {% endfor %}
        </ul>
<a href="#{{ category[0] }}-ref">&#8617</a>
{% endfor %}

当然,效率非常低,会产生一堆额外的空白,但它可以完成任务。

[原来错过了标签。刚添加它们。此外,为了获得空白,可以将for post in site.postsendfor之间的所有内容合并为一行。]

答案 2 :(得分:0)

        {% for post in site.categories.category %} 
        - OR -
        {% for post in site.categories.category[0] %} 

另外,我不确定为什么kshep的例子不起作用......