Breaking Else If заявление

я использую 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 %}

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

Другие решения

Сначала вы должны проверить самый большой размер, затем все меньше и меньше, потому что теперь, если размер списка ссылок равен, например, 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 %}
1

По вопросам рекламы [email protected]