Think Twice
IT技術メモ | Liquidのメモ
Created: 2021-09-06 / Updated: 2021-09-08

Liquidの制御フロー


制御フロータグでは、Liquidブロックを実行するかどうかを決定する様々な条件を定義します。

目次


if

if条件trueなるときのみ、ブロックを実行します。
{% if %}で開始して、{% endif %}で閉じます。

Copy
{% if <条件> %}
  <ブロック>
{% endif %}

Input (product.titleの値が "すごい靴" の場合)
Copy
{% if product.title == "すごい靴" %}
  こりゃすごい靴だ!
{% endif %}
Output
Copy
こりゃすごい靴だ!

unless

unlessifの反対で、条件trueならないときのみ、ブロックを実行します。
{% unless %}で開始して、{% endunless %}で閉じます。

Copy
{% unless <条件> %}
  <ブロック>
{% endunless %}

Input (product.titleの値が "すごくない靴" の場合)
Copy
{% unless product.title == "すごい靴" %}
  こりゃすごい靴じゃないぞ!
{% unless %}
Output
Copy
こりゃすごい靴じゃないぞ!

unlessは以下と同じ動きをします。

Input (product.titleの値が "すごくない靴" の場合)
Copy
{% if product.title != "すごい靴" %}
  こりゃすごい靴じゃないぞ!
{% endif %}

elsif / else

ifunlessに対して、それ以外の条件の時に実行するブロックを追加します。

if-else
Copy
{% if <条件1> %}
  <ブロック1>
{% else <条件2> %}
  <ブロック2>
{% endif %}
if-elsif-else
Copy
{% if <条件1> %}
  <ブロック1>
{% elsif <条件2> %}
  <ブロック2>
{% else <条件3> %}
  <ブロック3>
{% endif %}
unless-else
Copy
{% unless <条件1> %}
  <ブロック1>
{% else <条件2> %}
  <ブロック3>
{% endif %}

Input
Copy
{% assign name = "anonymous" %}
{% if name == "kevin" %}
  こんにちは、ケビン!
{% elsif name == "anonymous" %}
  こんにちは、匿名さん!
{% else %}
  あんたは誰だ!?
{% endif %}
Output
Copy
こんにちは、匿名さん!

参考

参照

参考サイト


  1. Rubyの方では、unlessに対してelsifは付けられないのに変なところで頑張ってますね😀(誉め言葉)。 ↩︎