SHARE
  1. Top
  2. ブログ一覧
  3. Shopify Liquidで日付を使った条件分岐する方法
Eコマース

Shopify Liquidで日付を使った条件分岐する方法

公開日

2025.02.17

更新日

2025.02.17

SHARE
Shopify Liquidで日付を使った条件分岐する方法のサムネイル

Shopify Liquidで日付を使った条件分岐する方法を解説します。例えば期間中に特定の商品を表示する、期間限定のセールを行うなど、日付を使った条件による出し分けが可能です。

日付をLiquidで扱う

Shopify Liquidでは、dateフィルターを使って日付を扱うことができます。dateフィルターは、指定したフォーマットで日付を表示することができます。以下は、コード例です。

{{ 'now' | date: '%Y-%m-%d' }}

-> 2025-02-17
{{ 'now' | date: '%Y-%m-%d %H:%M:%S' }}

-> 2025-02-17 12:34:56
{{ 'now' | date: format: 'basic' }}

-> 2025/2/17

フォーマットの指定方法は、Rubyのstrftimeメソッドと同様です。詳細はShopify公式ドキュメントを参照してください。

日付を使った条件分岐

日付の比較は文字列のままでもできます。ここでは、today変数に現在日付を、start_date変数に開始日を、end_date変数に終了日を代入し、その範囲内かどうかを比較する例を示します。

{% comment %} 2025-02-17 {% endcomment %}
{% assign today = 'now' | date: '%Y-%m-%d' %}
{% assign start_date = '2025-02-01' %}
{% assign end_date = '2025-02-28' %}

{% if today >= start_date and today <= end_date %}
  セール中です
{% else %}
  セールは終了しました
{% endif %}

-> セール中です

ただし、文字列比較は辞書順で行われるため、日付の比較を行う場合は、日付の数字だけに変換してから比較することが望ましいです。例えばstart_dateに2025-2-1という文字列が入っている場合、今日の日付が2025-02-17だとすると、文字列比較だと2025-2-1 > 2025-02-17となってしまい、期間外と判定されます。

{% comment %} 2025-02-17 {% endcomment %}
{% assign today = 'now' | date: '%Y-%m-%d' %}
{% assign start_date = '2025-2-1' %}
{% assign end_date = '2025-02-28' %}

{% if today >= start_date and today <= end_date %}
  セール中です
{% else %}
  セールは終了しました
{% endif %}

-> セールは終了しました

こうしたミスを防ぐためにdateフィルターを使い、Unixタイムスタンプの形式に変換してから比較する方が安全です。

{% comment %} 2025-02-17 {% endcomment %}
{% assign today = 'now' | date: '%s' %}
{% assign start_date = '2025-2-1' | date: '%s' %}
{% assign end_date = '2025-02-28' | date: '%s' %}

{% if today >= start_date and today <= end_date %}
  セール中です
{% else %}
  セールは終了しました
{% endif %}

-> セール中です

メタオブジェクトを使った日付の取得

例えばセール期間をメタオブジェクトで管理しているケースを想定します。最近ではテーマエディタにメタオブジェクトを埋め込むことが多いでしょう。
ここでは、test_saleという期間限定セールを設定して表示の出し分けてみましょう。

メタオブジェクトの定義をします。キャンペーンオブジェクトで以下のフィールドを設定しました。

  • name: セール名
  • start_date: 開始日
  • end_date: 終了日

alt text

続いてキャンペーンのエントリーを作成しました。

alt text

最後に以下のLiquidコードを記述します。

{% comment %} 2025-02-17 {% endcomment %}
{% assign today = 'now' | date: '%s' %}

{% assign test_sale = metaobjects['campaign']['test_sale'] %}

{% assign start_date = test_sale.start_date.value | date: '%s' %}
{% assign end_date = test_sale.end_date.value | date: '%s' %}

{% if today >= start_date and today <= end_date %}
  {{ test_sale.name }}中です
{% else %}
  {{ test_sale.name }}は終了しました
{% endif %}

無事期間限定セール中の判定と表示ができました🎉

alt text

まとめ

Shopify Liquidで日付を使った条件分岐する方法を解説しました。日付を使った条件分岐は、期間中に特定の商品を表示する、期間限定のセールを行うなど、ECサイト運営において重要です。ぜひご活用ください。

参考