チュートリアル:リキッドコードの記述
リキッドの新機能?これらのチュートリアルは、初心者向けのユースケース用のLiquidコードの作成を開始する際に役立ちます。各チュートリアルでは、条件付きロジックや演算子など、学習目標のさまざまな組み合わせについて説明します。
これらのチュートリアルを終了すると、次のことが可能になります。
- 一般的なユースケースのためのリキッドコードの記述
- 文字列の組み合わせユーザーデータに基づいてメッセージをパーソナライズするための流動的な条件付きロジック
- 変数とフィルタを使用して、属性の値を使用する方程式を記述します
- リキッドコードの基本的なコマンドを認識し、コードの動作についての一般的な理解を形成します
ユーザセグメントの個別メッセージ
VIP の顧客や新規契約者など、さまざまなユーザセグメントのメッセージをカスタマイズしましょう。
- ユーザのファーストネームを持っていて、持っていないときに送信するパーソナライズされた挨拶でメッセージを開きます。これを行うには、属性
first_name
とfirst_name
が空白の場合に使用するデフォルト値を含むLiquid タグを作成します。このシナリオでは、「トラベラー」をデフォルト値として使用します。
1
| Happy summer, {{${first_name} | default: "traveler"}}!
|
2.では、ユーザーがVIP カスタマーである場合に送信するメッセージを提供しましょう。ここでは、if
という条件付きロジックタグを使用する必要があります。このタグは、vip_status
カスタム属性がVIP
と等しい場合、次の液体が実行されることを示します。この場合、特定のメッセージが送信されます。
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 %}
|
フルリキッドコード
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.次に、焦点を絞り込み、オペレータ`>’ (「より大きい」を意味する) を使用してカートに3 つ以上の項目があるかどうかを確認する必要があります。
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 %}
|
フルリキッドコード
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!
|
フルリキッドコード
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 %}
|
フルリキッドコード
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 を終了します。最初のendif
は、お気に入りの製品または最終購入日の条件付きチェックを閉じ、2 番目のendif
は、少なくとも6 か月前の最終購入日の条件付きチェックを閉じます。
1
2
| {% endif %}
{% endif %}
|
フルリキッドコード
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 %}
|