在Liquid / Jekyll中的“if”条件内嵌套“for”循环

时间:2017-05-21 09:25:08

标签: jekyll liquid

我在尝试生成网站时遇到语法错误。你有什么想法吗?

错误:液体语法错误:未知标记'elsif'

{% if page.title == "Tags" %}
    {% for tag in site.tags %}
{% elsif page.title == "Categories" %}
    {% for tag in site.categories %}
{% endif %}
  <a href="#{{ tag[0] | slugify }}">{{ tag[0] }}</a>
  {% endfor %}

2 个答案:

答案 0 :(得分:0)

您不能像这样有条件地启动循环,控制块必须正确嵌套。要完成你想要做的事情,你可以这样做:

{% if page.title == "Tags" %}
  {% assign data = site.tags %} 
{% elsif page.title == "Categories" %}
  {% assign data = site.categories %}
{% endif %}

{% for tag in data %}
  <a href="#{{ tag[0] | slugify }}">{{ tag[0] }}</a>
{% endfor %}

答案 1 :(得分:0)

你错了。嵌套循环不能以这种方式工作。 它应该在相同的条件内开始和结束。

if conditional
    for loop

    endfor
endif
像这样的东西。

所以,正确的方法应该是这个

{% if page.title == "Tags" %}
    {% for tag in site.tags %}
        <a href="#{{ tag[0] | slugify }}">{{ tag[0] }}</a>
    {% endfor %}
{% elsif page.title == "Categories" %}
    {% for tag in site.categories %}
        <a href="#{{ tag[0] | slugify }}">{{ tag[0] }}</a>
    {% endfor %}
{% endif %}

此代码应该正确地执行您想要的操作,但有一种更好的方法,如JJJ所述