Control flow tags

Control flow tags determine which block of code should be executed based on different conditions.

In this article

  • if
  • elsif / else
  • case / when
  • unless

if

Executes a block of code only if a certain condition is met.

Input
{% if product.title == 'Awesome Shoes' %}
    These shoes are awesome!
{% endif %}
Output
These shoes are awesome!

elsif / else

Adds more conditions within an if or unless block.

Input
    <!-- If customer.name = 'anonymous' -->
  {% if customer.name == 'kevin' %}
    Hey Kevin!
  {% elsif customer.name == 'anonymous' %}
    Hey Anonymous!
  {% else %}
    Hi Stranger!
  {% endif %}
Output
Hey Anonymous!

case / when

Creates a switch statement to compare a variable with different values. case initializes the switch statement, and when compares its values.

Input
{% assign handle = 'cake' %}
{% case handle %}
  {% when 'cake' %}
     This is a cake
  {% when 'cookie' %}
     This is a cookie
  {% else %}
     This is not a cake nor a cookie
{% endcase %}
Output
This is a cake

unless

Similar to if, but executes a block of code only if a certain condition is not met.

Input
  {% unless product.title == 'Awesome Shoes' %}
    These shoes are not awesome.
  {% endunless %}
Output
These shoes are not awesome.

This would be the equivalent of doing the following:

  {% if product.title != 'Awesome Shoes' %}
    These shoes are not awesome.
  {% endif %}

results matching ""

    No results matching ""