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