【问题标题】:Nested "for" loop inside "if" condition in Liquid/Jekyll在 Liquid/Jekyll 中的“if”条件内嵌套“for”循环
【发布时间】:2017-05-21 09:25:08
【问题描述】:

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

错误: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 %}

【问题讨论】:

    标签: jekyll liquid


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

      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回答了更好的方法

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-15
        • 2020-03-06
        相关资源
        最近更新 更多