在 Liquid/Jekyll 的 "if" 条件内嵌套 "for" 循环

Nested "for" loop inside "if" condition in Liquid/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 %}

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

{% 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 %}

你完全错了。嵌套循环不会以这种方式工作。 它应该在同一个条件内开始和结束。

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

回答了更好的方法