打破其他If陈述

时间:2018-08-14 23:39:27

标签: php shopify liquid

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

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

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

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

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

2 个答案:

答案 0 :(得分:1)

您需要按降序排列elsif。第一个中的>=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 %}

答案 1 :(得分:1)

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

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