【问题标题】:Breaking Else If statement打破 Else If 语句
【发布时间】:2025-10-26 21:10:02
【问题描述】:

我正在使用Shopify's Liquid language 为我的商店创建一些内容列表,但是我无法使用我正在使用的if 语句来正确地理解逻辑。

我正在尝试根据几个条件将类分配给li html 元素,以便我最终可以稍后将它们分类为 5 个链接的组。

首先,我正在检查链接列表是否小于或等于5个链接,如果不是,则继续下一个,是否所有链接都等于或大于10,如果不是,请转到下一个,是链接等于 15 等等。

我知道我的逻辑在某处不太正确,我的代码似乎在第二个 elsif 结束,即使我的链接列表中有 20 个左右的链接。

{% if linklists[footer_linklist-2].links.size <= 5 and linklists[footer_linklist].links == empty %}

   columns_1

{% elsif linklists[footer_linklist-2].links.size >= 10 and linklists[footer_linklist].links == empty %}

   columns_2

{% elsif linklists[footer_linklist-2].links.size >= 15 and linklists[footer_linklist].links == empty %}

   columns_3

{% endif %}

【问题讨论】:

    标签: php shopify liquid


    【解决方案1】:

    您需要按降序排列您的elsif。第一个中的 &gt;=10 将捕获 10 个或更多(包括 15、20 等)的所有内容。试试这个:

    {% if linklists[footer_linklist-2].links.size <= 5 and linklists[footer_linklist].links == empty %}
    
       columns_1
    
    {% elsif linklists[footer_linklist-2].links.size >= 15 and linklists[footer_linklist].links == empty %}
    
       columns_3
    
    {% elsif linklists[footer_linklist-2].links.size >= 10 and linklists[footer_linklist].links == empty %}
    
       columns_2
    
    {% endif %}
    

    【讨论】:

      【解决方案2】:

      首先你应该检查最大的大小,然后越来越小,因为现在,如果链接列表大小是 30,那么它将转到columns_2,因为 20 >= 10,所以你的代码将分配值 @ 987654322@ 并没有去其他任何地方。正确的代码应该是这样的:

      {% if size >= 15 %} // all numbers greater or equal 15
          columns_4
      {% elseif size >= 10 %} // there you get numbers greater or equal 10, but smaller than 15
          columns_3
      {% elseif size > 5 %} // I added this, because what will happen if size is for example 7?
          columns_2
      {% else %} // any size smaller or equal 5
          columns_1
      {% endif %}
      

      您当然可以按从检测较小尺寸到较大尺寸的恢复顺序进行(在您的情况下应该更快):

      {% if size <= 5 %} // all numbers lower or equal 5
          columns_1
      {% elseif size <= 10 %} // there you get numbers lower or equal 10, but greater than 5
          columns_2
      {% elseif size <= 15 %} // all numbers lower or equal 15, but greater than 10
          columns_3
      {% else %} // any size greater than 15
          columns_4
      {% endif %}
      

      【讨论】: