Операторы/конструкции

Логические конструкции

If Оператор проверяет условие "если"

Оператор проверяет условие "если"
Liquid
        
          

{% if user %}
  Привет, {{ user.name }}
{% endif %}

else Условный оператор "иначе"

Условный оператор "иначе"
Liquid
        
          

{% if user %}
  Привет, {{ user.name }}
  {% else %}
  <a href="/client_account/contacts/new">Зарегистрироваться</a>
{% endif %}

Elsif Условный оператор который позоваляет делать новые ветки проверок

Условный оператор который позоваляет делать новые ветки проверок
Liquid
        
          

{% if user.name == 'tobi' %}
  Hello tobi
{% elsif user.name == 'bob' %}
  Hello bob
{% else %}
  Hello guest
{% endif %}

Unless Оператор Unless, в отличии от оператора If, удобен, если надо проверить отрицание условия

Оператор Unless, в отличии от оператора If, удобен, если надо проверить отрицание условия
Liquid
        
          

{% unless product.title contains 'колбаса' %}
  Это не колбаса
{% endunless %}

case/when Конструкция switch заменяет собой сразу несколько if или elsif.

Конструкция switch заменяет собой сразу несколько if или elsif.
Liquid
        
          
{% case handle %}
  {% when 'cake' %}
     This is a cake
  {% when 'cookie' %}
     This is a cookie
  {% else %}
     This is not a cake nor a cookie
{% endcase %}

Логические операторы

== равно

равно
Liquid
        
          
{% if product.title == "колбаса" %}
  Это колбаса
{% endif %}

!= Не равно

Не равно
Liquid
        
          
{% if product.title != 'колбаса' %} 
Это не колбаса
{% endif %}

> Больше

Больше
Liquid
        
          
{% if collection.products > 10 %} 
Товаров больше 10
{% endif %}

< Меньше

Меньше
Liquid
        
          
{% if collection.products < 10 %} 
Товаров меньше 10
{% endif %}

>= Больше или равно

Больше или равно
Liquid
        
          
{% if collection.products >= 10 %} 
Товаров больше или равно 10
{% endif %}

<= Меньше или равно

Меньше или равно
Liquid
        
          
{% if collection.products <= 10 %} 
Товаров меньше или равно 10
{% endif %}

or Или

Или
Liquid
        
          
{% if collection.subcollections.size > 0 or collection.title == 'Бренды' %} 
коллекция бренды или коллекция включающая более 0 субколлекций
{% endif %}

and И

И
Liquid
        
          
{% if collection.subcollections.size > 0 or collection.title == 'Бренды' %} 
Если имя коллекции - бренды и коллекция включает более 0 субколлекций
{% endif %}

contains Проверяет наличие подстроки внутри строки или внутри массива из строк.

Проверяет наличие подстроки внутри строки или внутри массива из строк.
Liquid
        
          
{% if product.title contains 'Pack' %}
  This product's title contains the word Pack.
{% endif %}
{% if article.tags contains 'Hello' %}
  This article has been tagged with 'Hello'.
{% endif %}

Итерационные теги

for Цикл применяется для обхода массивов

Цикл применяется для обхода массивов
Liquid
        
          

{% for product in collection.products %}
  {{ product.title }}
{% endfor %}

break Встретив тег {% break %} цикл прекращает итерации

Встретив тег {% break %} цикл прекращает итерации
Liquid
        
          

{% for i in (1..5) %}
  {% if i == 4 %}
    {% break %}
  {% else %}
    {{ i }}
  {% endif %}
{% endfor %}

#=> 1 2 3

continue Пропустить итерацию

Пропустить итерацию
Liquid
        
          

{% for i in (1..5) %}
  {% if i == 4 %}
    {% continue %}
  {% else %}
    {{ i }}
  {% endif %}
{% endfor %}

#=> 1 2 3   5

 

cycle Сycle чередует вывод переданных параметров. Можно использовать в цикле for.

Сycle чередует вывод переданных параметров. Можно использовать в цикле for.
Liquid
        
          

{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}
{% cycle 'one', 'two', 'three' %}

#=> one
#=> two
#=> three
#=> one

{% cycle 'group 1': 'one', 'two', 'three' %}
{% cycle 'group 1': 'one', 'two', 'three' %}
{% cycle 'group 2': 'one', 'two', 'three' %}
{% cycle 'group 2': 'one', 'two', 'three' %}

#=> one
#=> two
#=> one
#=> two

{% for i in (0..5) %}
  {% cycle '1', '2', '3' %}
{% endfor %}

#=> 1
#=> 2
#=> 3
#=> 1
#=> 2
#=> 3

limit Параметр limit ограничивает количество итераций

Параметр limit ограничивает количество итераций
Liquid
        
          

<!-- if array = [1,2,3,4,5,6] -->
{% for item in array limit:2 %}
  {{ item }}
{% endfor %}

#=> 1 2

offset Параметр offset указывает с какого индекса начанинать итерации

Параметр offset указывает с какого индекса начанинать итерации
Liquid
        
          

<!-- if array = [1,2,3,4,5,6] -->
{% for item in array offset:2 %}
  {{ item }}
{% endfor %}

#=> 3 4 5 6