チュートリアル:Liquid コードの記述
Liquid は初めてですか?これらのチュートリアルは、初心者向けのユースケース用のLiquidコードの作成を開始する際に役立ちます。各チュートリアルでは、条件付きロジックや演算子など、学習目標のさまざまな組み合わせについて説明します。
これらのチュートリアルを終了すると、次のことが可能になります。
- 一般的なユースケースのためのリキッドコードの記述
- 文字列の組み合わせユーザーデータに基づいてメッセージをパーソナライズするための流動的な条件付きロジック
- 変数とフィルタを使用して、属性の値を使用する方程式を記述します
- リキッドコードの基本的なコマンドを認識し、コードの動作についての一般的な理解を形成します
パーソナライズされたユーザーセグメントのメッセージ
VIP の顧客や新規サブスクライバーなど、さまざまなユーザーセグメントのメッセージをカスタマイズします。
- ユーザーの名がある場合とない場合で異なるパーソナライズされた挨拶をメッセージの冒頭に組み込みます。これを行うには、属性
first_name
とfirst_name
が空白の場合に使用するデフォルト値を含むLiquid タグを作成します。このシナリオでは、「traveler」をデフォルト値として使用します。
1
| Happy summer, {{${first_name} | default: "traveler"}}!
|
2.では、ユーザーがVIP カスタマーである場合に送信するメッセージを提供しましょう。ここでは、if
という条件付きロジックタグを使用する必要があります。このタグは、vip_status
カスタム属性がVIP
と等しい場合に次の Liquid が実行されることを示します。この場合、特定のメッセージが送信されます。
1
2
| {% if {{custom_attribute.${vip_status}}} == 'VIP' %}
Thank you for being a VIP customer! Enjoy your exclusive discount code: VIPSUMMR464.
|
3.新規サブスクライバーであるユーザーに、カスタマイズされたメッセージを送信します。条件付きロジックタグelsif
を使用して、ユーザのvip_status
がnew
の場合、次のメッセージが送信されることを指定します。
1
2
| {% elsif {{custom_attribute.${vip_status}}} == 'new' %}
Thank you for subscribing! Enjoy your welcome discount code: NEWTRAVEL257.
|
- VIPや新規でないユーザーはどうでしょうか。
else
タグを持つ他のすべてのユーザーにメッセージを送信できます。これは、前の条件が満たされない場合に、次のメッセージを送信することを指定します。次に、endif
タグを使用して条件付きロジックを閉じることができます。これは、これ以上考慮するVIP ステータスがないためです。
1
2
3
| {% else %}
Thanks for traveling with us! Enjoy your unique discount code: SUMMRTRVLS240.
{% endif %}
|
完全な Liquid コード
1
2
3
4
5
6
7
8
| Happy summer, {{${first_name} | default: "traveler"}}!
{% if {{custom_attribute.${vip_status}}} == 'VIP' %}
Thank you for being a VIP customer! Enjoy your exclusive discount code: VIPSUMMR464.
{% elsif {{custom_attribute.${vip_status}}} == 'new' %}
Thank you for subscribing! Enjoy your welcome discount code: NEWTRAVEL257.
{% else %}
Thanks for traveling with us! Enjoy your unique discount code: SUMMRTRVLS240.
{% endif %}
|
放棄されたカートのリマインダー
パーソナライズされたメッセージを送信して、ユーザーにカートに残されたアイテムを思い出させましょう。さらにカートに入っている商品の数に基づいて、送信するメッセージをカスタマイズします。商品が3つ以下の場合は、すべての商品を一覧表示します。3つ以上の商品があれば、もっと簡潔なメッセージを送ります。
- オペレータ
!=
で液体条件付きロジックを開き、ユーザのカートが空かどうかを確認してみましょう。これは”not equal” を意味します。この場合、空白値に等しくないカスタム属性cart_items
に条件を設定します。
1
| {% if {{custom_attribute.${cart_items}}} != blank %}
|
2.次に焦点を絞り、演算子「>」 (「より大きい」) を使用して、カートに入っている商品が4つ以上であるかどうかを確認する必要があります。
1
| {% if {{custom_attribute.${cart_items}}} | size > 3 %}
|
3.最初の名前でユーザを挨拶するメッセージを記述するか、それが利用できない場合はデフォルト値として”there” を使用します。カートに3つ以上の項目がある場合は、何を記載すべきかを含める。完全なリストでユーザを圧倒したくないので、最初の3 つのcart_items
をリストしましょう。
1
| Hi {{${first_name} | default: 'there'}}, don't forget to complete your purchase! Your items {{custom_attribute.${cart_items[0]}}}, {{custom_attribute.${cart_items[1]}}}, {{custom_attribute.${cart_items[2]}}}, and others are waiting for you.
|
else
タグを使用して、前の条件が満たされていない場合 (つまり cart_items
が空白または3未満の場合) の処理を指定し、送信するメッセージを入力します。商品が3つの場合はあまり場所を取らないので、すべて表示できます。Liquid 演算子join
および,
を使用して、項目をカンマで区切ってリストすることを指定します。endif
でロジックを閉じます。
1
2
3
| {% else %}
Hi {{${first_name} | default: 'there'}}, don't forget to complete your purchase! Your items: {{{custom_attribute.${cart_items}}} | join: ', '} are waiting for you.
{% endif %}
|
else
と abort_message
を使用して、カートが前の条件のいずれにも一致しない場合にメッセージを送信しないことを Liquid コードに指示します。つまり、カートが空の場合です。endif
でロジックを閉じます。
1
2
3
| {% else %}
{% abort_message('No items in cart') %}
{% endif %}
|
完全な Liquid コード
1
2
3
4
5
6
7
8
9
| {% if {{custom_attribute.${cart_items}}} != blank %}
{% if {{custom_attribute.${cart_items}}} | size > 3 %}
Hi {{${first_name} | default: 'there'}}, don't forget to complete your purchase! Your items {{custom_attribute.${cart_items[0]}}}, {{custom_attribute.${cart_items[1]}}}, {{custom_attribute.${cart_items[2]}}}, and others are waiting for you.
{% else %}
Hi {{${first_name} | default: 'there'}}, don't forget to complete your purchase! Your items: {{{custom_attribute.${cart_items}}} | join: ', '} are waiting for you.
{% endif %}
{% else %}
{% abort_message('No items in cart') %}
{% endif %}
|
イベントカウントダウン
記念セールまでの残り日数を記載したメッセージをユーザーに送りましょう。これを行うには、変数を使用して、属性の値を操作する方程式を作成します。
- まず、変数
sale_date
をカスタム属性 anniversary_date
に割り当て、date: "s"
フィルターを適用します。これにより、anniversary_date
が秒単位のタイムスタンプ形式に変換され、その値がsale_date
に割り当てられます。
1
| {% assign sale_date = {{custom_attribute.${anniversary_date}}} | date: "%s" %}
|
2.また、今日のタイムスタンプをキャプチャする変数を割り当てる必要があります。変数 today
を now
(現在の日時) に割り当て、date: "%s"
フィルターを適用します。
1
| {% assign today = 'now' | date: "%s" %}
|
3.次に、現時点 (today
) と Anniversary Sale (sale_date
) の間の秒数を計算します。これを行うには、変数 difference
を、sale_date
からtoday
を引いた値に割り当てます。
1
| {% assign difference = event_date | minus: today %}
|
- ここで、
difference
をメッセージで参照できる値に変換する必要があります。これは、セールまでに何秒あるかをユーザに伝えるのが理想的ではないためです。difference_days
をevent_date
に割り当て、86400
で割り、日数を取得します。
1
| {% assign difference_days = difference | divided_by: 86400 %}
|
- 最後に、送信するメッセージを作成しましょう。
1
| Get ready! Our Anniversary Sale is in {{ difference_days }} days!
|
完全な Liquid コード
1
2
3
4
5
| {% assign sale_date = {{custom_attribute.${anniversary_date}}} | date: "%s" %}
{% assign today = 'now' | date: "%s" %}
{% assign difference = event_date | minus: today %}
{% assign difference_days = difference | divided_by: 86400 %}
Get ready! Our Anniversary Sale is in {{ difference_days }} days!
|
月別誕生日メッセージ
今日の月内に誕生日を迎えるすべてのユーザーに特別なプロモーションを送りましょう。今月は誕生日のないユーザーはメッセージを受け取りません。
- まず、当月を取得します。変数
this_month
をnow
(現在の日付と時刻) に割り当て、date: "%B"
フィルタを使用して変数が月に等しくなるように指定します。
1
| {% assign this_month = 'now' | date: "%B" %}
|
2.では、ユーザのdate_of_birth
から誕生月を引き出しましょう。変数 birth_month
を date_of_birth
に割り当て、date: "%B"
フィルターを使用します。
1
| {% assign birth_month = {{${date_of_birth}}} | date: "%B" %}
|
3.ここで、月を値として持つ2 つの変数があるので、それらを条件付きロジックと比較できます。date_of_birth
がユーザーの birth_month
と等しいという条件を設定します。
1
| {% if {{this_month}} == {{birth_month}} %}
|
- 今月もユーザーの誕生月であれば、送信するメッセージを作成してみましょう。
1
| We heard {{this_month}} is a special month! Enjoy a 50% discount on your purchase with code BIRTHDAY50 until the end of {{this_month}}.
|
else
タグを使用して、条件が満たされない場合の動作を指定します(この月はユーザの誕生月ではないため)。
- ユーザーの誕生月が今月でない場合はメッセージを送信しないので、
abort_message
を使用してメッセージをキャンセルし、endif
で条件付きロジックを閉じます。
1
2
| {% abort_message("Not their birthday month") %}
{% endif %}
|
完全な Liquid コード
1
2
3
4
5
6
7
| {% assign this_month = 'now' | date: "%B" %}
{% assign birth_month = {{${date_of_birth}}} | date: "%B" %}
{% if {{this_month}} == {{birth_month}} %}
We heard {{this_month}} is a special month! Enjoy a 50% discount on your purchase with code BIRTHDAY50 until the end of {{this_month}}.
{% else %}
{% abort_message("Not their birthday month") %}
{% endif %}
|
お気に入りの製品のプロモーション
最終購入日が6ヶ月以上前であれば、ユーザーのお気に入りの商品をプロモートしましょう。
- まず、条件付きロジックを使用して、ユーザーのお気に入りの製品と最終購入日があるかどうかを確認します。
1
| {% if {{custom_attribute.${favorite_product}}} == blank or {{custom_attribute.${last_purchase_date}}} == blank %}
|
2.それから、ユーザーのお気に入りの商品や最終購入日がない場合は、メッセージを送信しないでくださいと記載します。
1
| {% abort_message("No favorite product or last purchase date") %}
|
3.else
を使用して、上記の条件が満たされない場合の動作を指定します(do にはユーザのお気に入りの製品と最終購入日が含まれているため)。
- 購入日がある場合は、変数に割り当てる必要があります。これにより、今日の日付と比較できます。まず、本日の日付の値を作成します。このために、変数
today
を now
(現在の日時) に割り当て、date: "%s"
フィルターを使用してこの値を秒単位のタイムスタンプ形式に変換します。plus: 0
フィルタを追加して、”0” をタイムスタンプに追加します。これはタイムスタンプの値を変更しませんが、将来の方程式でタイムスタンプを使用する場合に役立ちます。
1
| {% assign today = 'now' | date: "%s" | plus: 0 %}
|
- 次に、変数
last_purchase_date
をカスタム属性last_purchase_date
に割り当て、date: "s"
フィルタを使用して、最後の購入日を秒単位でキャプチャします。plus: 0
フィルタを再度追加します。
1
| {% assign last_purchase_date = {{custom_attribute.${last_purchase_date}}} | date: "%s" | plus: 0 %}
|
- 最終購入日と本日の日付は秒単位であるため、6か月の秒数を計算する必要があります。式(約6ヶ月×30.44日×24時間×60分×60秒)を作成し、変数
six_months
に代入します。times
を使用して、時間単位の乗算を指定します。
1
| {% assign six_months = 6 | times: 30.44 | times: 24 | times: 60 | times: 60 %}
|
- すべての時間値が秒単位になったので、方程式でそれらの値を使用できます。
today_minus_last_purchase_date
という変数を割り当てます。この変数は今日の値を取り、last_purchase_date
からこの値を差し引きます。これにより、前回の購入から何秒経過したかがわかります。
1
| {% assign today_minus_last_purchase_date = {{today | minus: last_purchase_date}} %}
|
- 次に、条件付きロジックで時間値を直接比較します。
today_minus_last_purchase_date
が6か月以上である (>=
) という条件を定義します。つまり最後の購入日は少なくとも6か月前です。
1
| {% if today_minus_last_purchase_date >= six_months %}
|
9.最後の購入が少なくとも6ヶ月前だった場合に送信するメッセージを作成してみましょう。
1
| We noticed it’s been a while since you last purchased {{custom_attribute.${favorite_product}}}. Have you checked out our latest offerings?
|
10.else
タグを使用して、条件が満たされていない場合にどうなるかを指定します(購入が少なくとも6 か月前ではなかったため)。
11.メッセージをキャンセルする abort_message
を含めます。
1
| {% abort_message("No favorite product or last purchase date") %}
|
12.最後に、2つのendif
タグで Liquid を終了します。1番目の endif
は、お気に入りの製品または最終購入日の条件付きチェックを閉じ、2番目のendif
は、最終購入日が6か月以上前であることの条件付きチェックを閉じます。
1
2
| {% endif %}
{% endif %}
|
完全な Liquid コード
1
2
3
4
5
6
7
8
9
10
11
12
13
| {% if {{custom_attribute.${favorite_product}}} == blank or {{custom_attribute.${last_purchase_date}}} == blank %}
{% abort_message("No favorite product or last purchase date") %}
{% else %}
{% assign today = 'now' | date: "%s" | plus: 0 %}
{% assign last_purchase_date = {{custom_attribute.${last_purchase_date}}} | date: "%s" | plus: 0 %}
{% assign six_months = 6 | times: 30.44 | times: 24 | times: 60 | times: 60 %}
{% assign today_minus_last_purchase_date = {{today | minus: last_purchase_date}} %}
{% if today_minus_last_purchase_date >= six_months %}
We noticed it’s been a while since you last purchased {{custom_attribute.${favorite_product}}}. Have you checked out our latest offerings?
{% else %}
{% abort_message("Last purchase was less than six months ago") %}
{% endif %}
{% endif %}
|