Shopifyの開発言語Liquidのタグ解説。{% break %}
と同様、イテレーション(iteration)タグとしてよく使われる{% continue %}
について紹介いたします。
Shopifyのプログラミング言語であるLiquid。if文やfor文、case文などカスタマイズに不可欠な色々な制御構文があります。
本サイトでは以前、このような構文を理解するための用法やサンプルコードなどを紹介しました。
Shopify Liquid for文とif文「 繰り返し実行」or「1度だけ実行 」
Shopify Liquid 通知設置によく登場する「case」と「when」の使い方
先日は、{% break %} について、シンプルなサンプルコードを交えて紹介しました。
【Liquid基礎】ループの強制終了に用いる {% break %} を理解するための最もシンプルなコード
今回は、{% break %}
と同様、イテレーション(iteration)タグとしてよく使われる{% continue %}
について紹介いたします。
{% continue %}の役割
{% continue %}
は、Liquidでループ内で使われるタグで、ループを途中でスキップして次のループの繰り返しに進むためのものです。
例えば、特定の条件に一致した場合にループの処理をスキップしたい場合に役立ちます。
for文、if文とセットで使用される事が多い
{% break %}
と同様、
・ループを作るfor文
・条件っを作るif文
とセットで使用される事が多いです。
for文開始直後に登場する事が多い
{% continue %}
は、スキップする条件を先に設定しておくという性質があるため、forループの開始直後に登場することが多いです。
また、無駄なループ処理が行われる前にスキップできるため、特に重い処理を伴う場合にはパフォーマンス改善にもつながると言われているようです。
簡単なサンプルコード
では、サンプルコードを見ていきましょう。
{% for product in collection.products %}
{% if product.tags contains 'exclude' %}
{% continue %}
{% endif %}
<div class="product">
<h2>{{ product.title }}</h2>
<p>{{ product.description }}</p>
</div>
{% endfor %}
①コレクションの商品を1つずつ取り出し、処理する。
②「exclude」とタグを持つ商品であれば、処理をスキップする。
③「exclude」とタグを持つ商品は、タイトル(title)や概要(description)を取得・表示
条件によって処理を行うか、行わないかを決めるのは、以下のコードと挙動が類似します。
{% for product in collection.products %}
{% if product.tags contains 'exclude' %}
<!-- 何もしない -->
{% else %}
<div class="product">
<h2>{{ product.title }}</h2>
<p>{{ product.description }}</p>
</div>
{% endif %}
{% endfor %}
{% continue %}
は、最初から処理不要の条件を付けているので、無駄な処理が発生しないというメリットがあります。
そのため、大規模なデータ(商品の数が多いなど)の場合は、{% continue %}
を使ったコードの方が効率的と言われています。
{% break %}の順番に注意
例えば、以下のようなコードだと、
{% for product in collection.products %}
<div class="product">
<h2>{{ product.title }}</h2>
<p>{{ product.description }}</p>
</div>
{% if product.tags contains 'exclude' %}
{% continue %}
{% endif %}
望んでいた{% continue %}
の処理結果が得られませんので、ご注意ください。
上述しましたが、{% continue %}
はループ開始直後に使用される事が多いので、処理後になると、スキップするはずの商品(ここのコードでは)が表示されてしまうのです。
以上、{% continue %}
の役割とサンプルコードでした。