各テンプレートで使用できる変数
ecforce では以下のテンプレートは、Liquid テンプレートエンジンを採用しています。
- メールテンプレート
- LPテンプレート(LP部分テンプレート)
- LPタグ管理
- ショップのタグ管理
- 帳票(出庫伝票・受注帳票)
- [オプション機能]ステップメール(配信内容・スポット配信)
- [オプション機能]Webhookテンプレート
使用可能なLiquid変数は、各管理画面(出庫伝票およびWebhookテンプレートを除き)で確認可能です。
Liquid テンプレートエンジンにより、動的に変動する受注情報や顧客情報などを「変数」として呼び出せます。
使用できる変数
使用できる変数は各画面によって異なります。
※各編集画面で使用できる変数一覧は「使用できる変数一覧」をよりご確認ください。
メールテンプレートで使用できる変数は、各カテゴリで異なります。
該当カテゴリで使用できない変数を指定した場合、空白が出力されます。
高度な機能となりますが、Liquidを使用することでメールテンプレートの条件分岐・ループ処理が可能です。
本記事では、Liquidの使い方例を参考としてご紹介します。
※Liquidの使い方・文法などの確認は、カスタマーサポートのサポート対象外です。
単品注文と定期注文で受注情報の表示内容を一部変更したい
設定例
{% if order.recurring? %} この受注は定期受注です。 {% else %} この受注は通常受注です。 {% endif %}
出力例
この受注は定期受注です。
今日の日付を表示したい
設定例1
{{ "now" | date: "%Y/%m/%d" }}
出力例1
2019/03/03
設定例2
{{ "now" | date: "%Y-%-m-%-d" }}
出力例2
2019-3-3
今日+X日の日付を表示したい
設定例
今日(2019/04/25 とします)の14日後の日付を表示します
{% assign seconds = 14 | times: 24 | times: 60 | times: 60 %} {{ "now" | date: "%s" | plus: seconds | date: "%-m月%-d日" }}
出力例
5月9日
受注のデバイス情報を表示したい
(a) 受注管理の「デバイス」の値をそのまま表示する場合
設定例
{{ order.device_variant }}
出力例1
スマートフォンで購入された場合
smartphone
出力例2
PCで購入された場合
pc
出力例3
管理画面から受注作成された場合・定期2回目以降の受注の場合
(何も出力されません)
- LP・ショップページで購入された場合、smartphone か pc が出力されます。
- 定期2回目以降の受注・受注作成から作成した受注の場合は何も表示されません。
(b)(a)で出力する文字列を「モバイル」「PC(大文字)」にする場合
設定例
{% if order.device_variant == 'smartphone' %}
モバイル
{% else %}
{{ order.device_variant | upcase }}
{% endif %}
出力例1
スマートフォンで購入された場合
モバイル
出力例2
PCで購入された場合
PC
出力例3
管理画面から受注作成された場合・定期2回目以降の受注の場合
(何も出力されません)
(c)デバイスが不明の場合は一律で「不明」と表示、その他は (b) と同じ条件にする場合
設定例
{% if order.device_variant == blank %}
不明
{% elsif order.device_variant == 'smartphone' %}
モバイル
{% else %}
{{ order.device_variant | upcase }}
{% endif %}
出力例1
スマートフォンで購入された場合
モバイル
出力例2
PCで購入された場合
PC
出力例3
管理画面から受注作成された場合・定期2回目以降の受注の場合
不明
(d) スマートフォンで購入された場合は「モバイル」、その他は一律で「PC」と表示する場合
設定例
{% if order.device_variant == 'smartphone' %}モバイル{% else %}PC{% endif %}
出力例1
スマートフォンで購入された場合
モバイル
出力例2
PCで購入された場合
PC
出力例3
管理画面から受注作成された場合・定期2回目以降の受注の場合
PC
受注の配達日の指定がない場合は「指定なし」と出力したい
設定例
{% if order.scheduled_to_be_delivered_at %}
{{ order.scheduled_to_be_delivered_at | date: '%Y/%m/%d' }}
{% else %} 指定なし {% endif %}
出力例1
配達日の指定がある場合(受注管理>受注管理 の配送予定日に日付が入っている場合)
2019/04/05
出力例2
配達日の指定がある場合(受注管理>受注管理 の配送予定日に日付が入っていない場合)
指定なし
受注の配達希望時間について、指定されなかったときは「指定なし」と出力したい
設定例
{% if order.scheduled_delivery_time == '' %}
指定なし
{% else %}
{{ order.scheduled_delivery_time }}
{% endif %}
出力例1
配達日の指定がある場合(受注管理 > 受注管理 のお届け時間に指定時間が表示されている場合)
午前中
出力例2
配達日の指定がある場合(受注管理 > 受注管理 のお届け時間に「指定なし」と表示されている場合)
指定なし
[受注] 複数商品を購入された際の明細表示方法を変えたい
- 規格を持たない商品の場合は規格は出力しません。
- 税率設定で設定可能な印つきの商品名を出力しています。印なしの商品名を出力したい場合は {{ order_item.name_with_tax }} を {{ order_item.variant.name }} に変更してください。
設定例
{% for order_item in order.order_items %} 商品名: {{ order_item.name_with_tax }}{% if order_item.variant.option_values_presentation %} ({{ order_item.variant.option_values_presentation }}){% endif %} 商品コード: {{ order_item.product.number }} SKUコード: {{ order_item.variant.sku }} 単価(税抜): {{ order_item.price }} 円 数量: {{ order_item.quantity }} 価格(単価×数量): {{ order_item.price | times: order_item.quantity }} 円 {% endfor %}
出力例
商品名:商品A (サイズ:S 色:赤) 商品コード: P01 SKUコード: SKU01 単価(税抜): 1000円 数量: 2 価格(単価×数量): 2000円 商品名:商品B ※ 商品コード: P02 SKUコード: SKU02 単価(税抜): 1000円 数量: 1 価格(単価×数量): 1000円
[定期受注] 次回のお届けをスキップした商品を非表示にしたい
定期受注管理にて、次回のみ一部商品のお届けをスキップする機能を利用した場合に、「カテゴリー:定期受注 / 次回発送・配送予定日通知」でよく使われる手法です。
設定例
スキップする商品も含めて出力
{% for order_item in subs_order.order_items %}
商品名:{{ order_item.variant.name }}
数量:{{ order_item.quantity }}個
{% endfor %}
------
スキップする商品は除いて出力
{% for order_item in subs_order.order_items %}
{% unless order_item.skip? %}
商品名:{{ order_item.variant.name }}
数量:{{ order_item.quantity }}個
{% endunless %}
{% endfor %}
出力例
スキップする商品を「商品B」とします。
スキップする商品も含めて出力
商品名:商品A
数量:1個
商品名:商品B
数量:1個
商品名:商品C
数量:2個
------
スキップする商品は除いて出力
商品名:商品A
数量:1個
商品名:商品C
数量:2個
参考
「カテゴリー:受注管理」で次回商品を表示したい場合は以下となります。
スキップする商品も含めて出力
{% for order_item in order.subs_order.order_items %}
商品名:{{ order_item.variant.name }}
数量:{{ order_item.quantity }}個
{% endfor %}
------
スキップする商品は除いて出力
{% for order_item in order.subs_order.order_items %}
{% unless order_item.skip? %}
商品名:{{ order_item.variant.name }}
数量:{{ order_item.quantity }}個
{% endunless %}
{% endfor %}
購入した商品により表示内容を変えたい
注文完了メールでよく使われる手法です。 受注商品情報に特定の商品コード・SKUコード・商品名を持つ場合に特定の表示をする、などの切り分けが可能です。
if の後の変数は適宜読み替えてください。
for~endfor について
たとえば {% for order_item in order.order_items %}~{% endfor %}の場合、受注が持つ商品の数だけ、処理を繰り返します。
特に複数の商品を購入されている受注の場合、書き方によっては想定外の表示となる場合がああるため、十分なテストをすることを推奨します。
また条件分岐は少し高度な手法となります。知見のある方にご相談・ご対応いただくことを推奨します。
商品コード:order_item.product.number SKUコード:order_item.variant.sku 商品名:order_item.product.name
(a) 完全一致させる場合
※SKUコードでの実行例です。order_item.variant.sku の部分は適宜読み替えてください。
設定例1
{% for order_item in order.order_items %} {% if order_item.variant.sku == 'SKU-001' or order_item.variant.sku == 'SKU-003' %} SKUコードが「SKU-001」または「SKU-003」のときに表示したい文章。 {% else %} SKUコードが「SKU-001」「SKU-003」以外のときに表示したい文章。表示の必要がない場合は else は不要です。 {% endif %} {% endfor %}
出力例1-1
購入商品のSKUコードが「SKU-001」「SKU-002」の2種類のとき
SKUコードが「SKU-001」または「SKU-003」のときに表示したい文章。 SKUコードが「SKU-001」「SKU-003」以外のときに表示したい文章。表示の必要がない場合は else は不要です。
出力例1-2
購入商品のSKUコードが「SKU-001」「SKU-003」の2種類のとき
SKUコードが「SKU-001」または「SKU-003」のときに表示したい文章。 SKUコードが「SKU-001」または「SKU-003」のときに表示したい文章。
出力例1-3
購入商品のSKUコードが「SKU-001」のみのとき
SKUコードが「SKU-001」または「SKU-003」のときに表示したい文章。
出力例1-4
購入商品のSKUコードが「SKU-002」のみのとき
SKUコードが「SKU-001」「SKU-003」以外のときに表示したい文章。表示の必要がない場合は else は不要です。
設定例2
設定例1の場合、受注商品の数だけメッセージを表示するため「該当メッセージ」を1回だけ出力した後は該当処理を中断させる方法です。
{% for order_item in order.order_items %} {% if order_item.variant.sku == 'SKU-001' or order_item.variant.sku == 'SKU-003' %} SKUコードが「SKU-001」または「SKU-003」のときに表示したい文章。 {% break %} {% endif %} {% endfor %}
出力例2-1
購入商品のSKUコードが「SKU-001」「SKU-002」の2種類のとき
SKUコードが「SKU-001」または「SKU-003」のときに表示したい文章。
出力例2-2
購入商品のSKUコードが「SKU-001」「SKU-003」の2種類のとき
SKUコードが「SKU-001」または「SKU-003」のときに表示したい文章。
出力例2-3
購入商品のSKUコードが「SKU-001」のみのとき
SKUコードが「SKU-001」または「SKU-003」のときに表示したい文章。
出力例2-4
購入商品のSKUコードが「SKU-002」のみのとき
(何も出力されません)
(b) 部分一致で判断したい場合
※商品名での実行例です。order_item.product.name の部分は適宜読み替えてください。
設定例
{% for order_item in order.order_items %} {% if order_item.product.name contains '化粧水' %} 購入商品名に「化粧水」の文字列を含んでいるときに表示したい文章。 {% elsif order_item.product.name contains '乳液' %} 購入商品名に文字列「化粧水」を含まず、文字列「乳液」を含んでいるときに表示したい文章。 {% else %} 購入商品名に文字列「化粧水」「乳液」を含まないときに表示したい文章。 {% endif %} {% endfor %}
出力例1
購入商品名が「超高級化粧水セット」の場合
購入商品名に「化粧水」の文字列を含んでいるときに表示したい文章
出力例2
購入商品名が「美容液&乳液サンプルセット」の場合
購入商品名に文字列「化粧水」を含まず、文字列「乳液」を含んでいるときに表示したい文章。
出力例3
購入商品名が「お手頃美容液」の場合
購入商品名に文字列「化粧水」「乳液」を含まないときに表示したい文章。
出力例4
購入商品名が「超高級化粧水・乳液セット」の場合
購入商品名に「化粧水」の文字列を含んでいるときに表示したい文章。
(c) 繰り返し処理をせずに判定させたい場合
(a) 完全一致させる場合の設定例2 では elsif (または●●のとき)の条件を設定すると購入商品の処理順によって想定外の結果となるため、以下の方法を採用することで解決できる場合があります。
ただし「完全一致」による条件分岐はできないため、商品名やSKUコードの付与規則によっては、本方式では実現できない場合もあります。ロジック等の相談はカスタマーサポートの対象外のため、コーダーなど知見のある方へご相談ください。
設定例
{% assign order_item_sku = order.order_items | map: 'variant' | map: 'sku' | join: ' ' %}
{% if order_item_sku contains 'SKU-001' or order_item_sku contains 'SKU-003' %} 購入商品のSKUコードが「SKU-001」または「SKU-003」を含むときに表示したい文章。 {% elsif order_item_sku contains 'SKU-002' %} 購入商品のSKUコードが「SKU-002」を含むときに表示したい文章。 {% endif %}
出力例1
購入商品のSKUコードが「SKU-001」「SKU-002」の2種類のとき
購入商品のSKUコードが「SKU-001」または「SKU-003」を含むときに表示したい文章。 購入商品のSKUコードが「SKU-002」を含むときに表示したい文章。
出力例2
購入商品のSKUコードが「SKU-001」「SKU-003」の2種類のとき
購入商品のSKUコードが「SKU-001」または「SKU-003」を含むときに表示したい文章。
出力例3
購入商品のSKUコードが「SKU-001」のみのとき
購入商品のSKUコードが「SKU-001」または「SKU-003」を含むときに表示したい文章。
出力例4
購入商品のSKUコードが「SKU-001-03」のみのとき
※部分一致での比較となるため「●●SKU-001××」のようなSKUコードでも対象となります。
購入商品のSKUコードが「SKU-001」または「SKU-003」を含むときに表示したい文章。
出力例5
購入商品のSKUコードが「SKU-002」のみのとき
購入商品のSKUコードが「SKU-002」を含むときに表示したい文章。
出力例6
購入商品のSKUコードが「SKU--004」のみのとき
(何も出力されません)
支払い方法により表示内容を変えたい
注文完了メールでよく使われる手法です。
特定の支払い方法の場合に、決まった文章を表示する際に活用できます。
「支払い方法名」で場合分けを行った場合「支払い方法管理」で支払い方法の表示名称を変更する際は、あわせてメールテンプレートも修正が必要となります。
上記を避けるためには「支払い方法ID」での場合分けをご利用ください。
(a) 支払い方法名で場合分けする場合
設定例
{% if order.payment.payment_method.name == "銀行振込" %} xxxxxx(振込先口座情報) {% endif %}
(b) 支払い方法IDで場合分けする場合
設定例
{% if order.payment.payment_method.id == 15 %} xxxxxx(振込先口座情報) {% endif %}
支払い方法IDは「支払い方法管理」もしくは「[資料]支払い方法一覧」でご確認ください。
[ショップタグ管理] ページにより読み込むタグ・CSSを変えたい
ショップのタグ設定で「カート・ショップ購入画面(カート画面・注文入力画面・注文確認画面・注文完了画面」と「カート・ショップ購入画面以外の全画面」のタグ読み込みを制御可能です。
(タグ以外にもCSS読み込みにも利用可能です)
「カート・ショップ購入画面以外の全画面」について、さらに出し分けが必要な場合「ショップのタグ管理」で利用できる以下の変数を利用し、個別URLごとに出し分けの記述が可能です。
変数
変数 | 説明 | 出力例 |
---|---|---|
{{ site_url }} | サイトのドメイン名が表示されます。 | https://example.com |
{{ page_url }} | 現在表示しているページのURLが表示されます。 | https://example.com/shop/product/sample |
{{ full_page_url }} | 現在表示しているページのURL(クエリパラメータあり)が表示されます。 | https://example.com/shop/product/sample?utm=xxxx |
記述例1
{% if page_url == 'https://example.com/shop/product_categories/AAA' %}
<link rel="stylesheet" href="{{ file_root_path }}/foo/bar/aaa.css" type="text/css">
{% elsif page_url == 'https://example.com/shop/product_categories/BBB' %}
<link rel="stylesheet" href="{{ file_root_path }}/foo/bar/bbb.css" type="text/css">
{% elsif page_url contains 'https://example.com/shop/information' %}
<link rel="stylesheet" href="{{ file_root_path }}/foo/bar/ccc.css" type="text/css">
{% endif %}
記述例2
{% assign url_path = page_url | remove: site_url %}
{% if url_path == '/shop/product_categories/AAA' %}
<link rel="stylesheet" href="{{ file_root_path }}/foo/bar/aaa.css" type="text/css">
{% elsif url_path == '/shop/product_categories/BBB' %}
<link rel="stylesheet" href="{{ file_root_path }}/foo/bar/bbb.css" type="text/css">
{% elsif url_path contains '/shop/information' %}
<link rel="stylesheet" href="{{ file_root_path }}/foo/bar/ccc.css" type="text/css">
{% endif %}
この記事の目次
このセクションの記事