【Shopify】日付を比較する(例:「今日がメタフィールドで設定した日付の前か後か」によって表示する文章を変える)

2022/02/01に公開約2,000字

今回は例として、「今日がメタフィールドで設定した日付の前か後か」によって表示する文章を変えるコードを書いてみます。
この記事を見ながらコード編集を行う場合はうまくいかなかったときのためにテーマを複製してから、自己責任で行ってください。

商品メタフィールドの定義を追加する

メタフィールドの値を設定する

商品編集からメタフィールドの値が設定できるようになっているので、設定します。
私は適当に1/12にしました。

メタフィールドの値を出力するには

メタフィールドの値を出力するにはスクショで選択している部分を{{}}で囲みます。

メタフィールドで設定した日付と今日の日付を比較するには

日付の形のままで比較することはできないので下記のようにdateフィルターを使って秒数に変換します。

| date:'%s'

カスタムLiquidでメタフィールドの日付の秒数と今の秒数を出力してみる

メタフィールドに設定している日付は1/12です。
今日は1/31です。
そのため今日の秒数の方が大きい数字です。

{{ product.metafields.my_fields._date | date: '%s' }}
{{ 'now' | date: '%s' }}

「今日がメタフィールドで設定した日付の前か後か」によって表示する文章を変えるコード

{%- assign metaDate = product.metafields.my_fields._date | date: '%s' -%}
{%- assign now = 'now' | date: '%s' -%}
{%- if metaDate > now -%}
今日がメタフィールドの日付よりも前ならこの文章を表示します
{%- else -%}
今日がメタフィールドの日付よりも後ならこの文章を表示します
{%- endif -%}

コード解説

{%- assign metaDate = product.metafields.my_fields._date | date: '%s' -%}
→メタフィールドの日付の秒数をmetaDateという変数に代入しています。
{%- assign now = 'now' | date: '%s' -%}
→今の秒数をnowという変数に代入しています。
{%- if metaDate > now -%}
→nowの秒数がmetaDateの秒数よりも小さいなら、つまり今日がメタフィールドの日付よりも前なら
{%- else -%}
→それ(nowの秒数がmetaDateの秒数よりも小さい)以外なら、つまり今日がメタフィールドの日付よりも後なら

カスタムLiquidに上記のコードを入力してみる

今日はメタフィールドの日付よりも後なので「今日がメタフィールドの日付よりも後ならこの文章を表示します」と表示されました。

文章をタグで囲むのを忘れていました。

{%- assign metaDate = product.metafields.my_fields._date | date: '%s' -%}
{%- assign now = 'now' | date: '%s' -%}
{%- if metaDate > now -%}
<p>今日がメタフィールドの日付よりも前ならこの文章を表示します</p>
{%- else -%}
<p>今日がメタフィールドの日付よりも後ならこの文章を表示します</p>
{%- endif -%}

って感じで何かタグで囲んでください。

実務経験が浅く、まずはもっと経験を積みたい
→マージン多めに取っていただいて大丈夫ですのでお仕事をご共有いただけるとありがたいです/できる限りご予算に合わせます!
Twitter( https://twitter.com/airi_airi_0007 )のDMでお気軽にお声掛けください!

Discussion

ログインするとコメントできます