1. Top
  2. ブログ一覧
  3. 【Shopify Liquid】余計なホワイトスペースを入れないようにする
Eコマース

【Shopify Liquid】余計なホワイトスペースを入れないようにする

公開日

2024.12.09

【Shopify Liquid】余計なホワイトスペースを入れないようにするのサムネイル

Shopifyでテンプレートを作っていると、意図しない余白がHTMLに出てしまって困ったことはありませんか?たとえばリストがうまく揃わなかったり、デザインが崩れたり…。そんなトラブルをLiquidの「ホワイトスペース制御」で簡単に解決できます!

本記事では、Liquidテンプレートで余計な空白が発生する原因と、それを解消する方法を初心者向けにわかりやすく解説します。

ホワイトスペースが発生する例とその問題点

Liquidテンプレートでは、意図しない空白や改行がHTMLに含まれることがあります。

問題例:

{% for product in products %}
  <li>{{ product.title }}</li>
{% endfor %}

このコードでは、各行の改行やインデントがそのままHTMLに反映され、リストが崩れたり、デザインに悪影響を与える可能性があります。

ホワイトスペース制御の基本構文

Liquidには、余計な空白や改行を削除するための構文があります。

  • {%- ... -%}: ブロックの両端の空白を削除
  • {{- ... -}}: 値の両端の空白を削除

これを使うことで、意図しない空白を防ぐことができます。

修正版コード例

例1: 改行やインデントを削除

<ul>
{%- for product in products -%}
  <li>{{- product.title -}}</li>
{%- endfor -%}
</ul>

この修正版では、改行やインデントが削除され、クリーンなHTMLが生成されます。

例2: データ内の空白も削除

空白を含むデータには strip フィルターを適用することで、さらにスッキリした出力が得られます。

<ul>
{%- for product in products -%}
  <li>{{- product.title | strip -}}</li>
{%- endfor -%}
</ul>

よくある質問とトラブルシューティング

質問1: 空白が消えないのはなぜ?

Liquid構文で空白制御を適切に使用していない可能性があります。また、データそのものに空白が含まれている場合もあります。

{% assign text = "  Example " %}
{{ text }}

このコードでは空白が残ります。strip フィルターを使用すると解決します。

{{ text | strip }}

質問2: Liquid構文を使っても意図しない空白が残る?

Liquid構文の削除タグ (-) を使用していない場合、余計な空白が保持される可能性があります。以下のように修正してください。

{%- if products.size > 0 -%}
  {{- products.first.title -}}
{%- endif -%}

まとめ

Liquidのホワイトスペース制御を理解することで、余計な空白を排除し、テンプレートを効率よく作成できます。これにより、HTMLの見た目を改善し、読みやすいコードを書くことができます。

次は、Liquidのフィルターや条件分岐構文を試して、さらに柔軟なテンプレートを作ってみましょう!

参考資料