變量與液體
此應用程式中所有動態內容皆採用 Liquid - - 這正是 Shopify 主題所使用的模板語言。您只需撰寫佔位符,應用程式便會在發送時自動填入內容。
命名空間
| 命名空間 | 價值從何而來 | 提供以下版本: |
|---|---|---|
{{ variables.key }} |
「Shopify Flow」動作中的「變數 (JSON)」欄位 | 電子郵件主旨與內文、HTTP URL、標頭與內容 |
{{ secrets.key }} |
「祕密」頁面 | 同上,另需提供 SMTP 使用者名稱與密碼 |
{{ shop.name }}, {{ shop.domain }}, {{ shop.email }} |
您的商店 | 電子郵件與 HTTP 動作 |
{{ language }} |
由「Shopify Flow」步驟傳送的語言,否則即為佈局的預設語言 | 電子郵件主旨、預覽文字及內文 - - 請參閱 以客戶的語言發送電子郵件 |
{{ unsubscribe_link }}, {{ unsubscribe_url }} |
收件者的取消訂閱連結(僅限行銷版面配置) | 電子郵件正文;在交易型版面配置中為空 - 詳見下文 |
{{ flow.key }} |
Shopify Flow 的原始載荷 | 僅限 HTTP 請求 |
編輯器中的「系統變數」卡片會列出各變數的值及其當前內容,點擊其中一項即可複製該值。
從Shopify Flow傳遞變數
在「Shopify Flow」動作中,請在「**變數 (JSON)」**欄位中輸入一個 JSON 物件:
{
"firstName": "{{ customer.firstName }}",
"orderNumber": "{{ order.name }}",
"total": "{{ order.totalPriceSet.shopMoney.amount }}"
}
接著,您可以在版面配置的任何位置引用它們:
Hi {{ variables.firstName }}, your order {{ variables.orderNumber }} is on its way.
鍵值由您自行選擇。您在左側輸入的任何名稱,都將在 variables. 之後被使用,且拼寫與大寫格式必須完全一致。
您無需手動撰寫這段 JSON。每個佈局都有一張**「在 Shopify Flow 中使用」**卡片,其中已備妥可供複製的正確 JSON - - 請參閱 從 Shopify Flow 傳遞資料。
篩選器
標準的 Liquid 過濾器都能正常運作。其中最實用的就是 default,它能防止出現空值:
Hi {{ variables.firstName | default: "there" }}
其餘的表現則如你所料:
{{ variables.productTitle | upcase }}
{{ variables.total | round: 2 }}
{{ variables.note | truncate: 100 }}
當變數顯示為空白時
若即時傳送的程式碼會將任何被引用的變數轉換為 nothing,則該程式碼在「**歷史紀錄」**中會顯示「**空變數」**標籤。開啟該條目時,系統會為其命名,並將兩個不同的問題區分開來:
- 由 Shopify Flow 傳送,但內容為空 - - 該鍵雖存在於您的 JSON 中,但 Shopify Flow 卻未產生任何值。通常是屬性路徑錯誤,或是該記錄中的欄位確實為空(訪客結帳時不會有客戶名字)。
- 這根本不是由 Shopify Flow 傳送的 - - 您的 JSON 檔案中完全缺少這把金鑰。
加入 | default: 備用連結,即表示該空白處是刻意為之,應用程式便不會再就此發出警告。
條件語句與迴圈
請使用 HTML / 程式碼區塊來撰寫條件語句:
{% if variables.isVip %}
<p>As a VIP you get free shipping on this order.</p>
{% else %}
<p>Spend a little more to unlock free shipping.</p>
{% endif %}
使用「迴圈」積木來重複處理一個陣列,例如訂單明細:
{% for item in variables.items %}
<tr>
<td>{{ item.title }}</td>
<td>{{ item.quantity }}</td>
<td>{{ item.price }}</td>
</tr>
{% endfor %}
將 Shopify Flow 中的陣列以 JSON 格式傳遞:
{
"items": [
{ "title": "Classic White T-Shirt", "quantity": 2, "price": "29.00" },
{ "title": "Eco Water Bottle", "quantity": 1, "price": "19.00" }
]
}
若要在建構器中預覽迴圈,請在「**測試變數」**分頁中輸入與該值相同的 JSON 陣列。
物件在電子郵件和 HTTP 中的行為有所不同
這正是唯一值得了解的尖銳邊緣。
- 在 HTTP 請求中,對物件或陣列進行插值會自動將其序列化為 JSON。例如,
{{ variables.records }}會在請求正文中轉為標準的 JSON 陣列。若您希望明確指定,亦可使用json篩選器。 - 在電子郵件中,並不會進行此類轉換。對整個物件進行插值運算後,會將文字「
[object Object]」原樣呈現。
因此,在電子郵件中,請務必直接在主旨欄中輸入內容,而非直接列印:
Wrong: {{ variables.customer }}
Right: {{ variables.customer.firstName }} {{ variables.customer.lastName }}
或者,可以對陣列進行迴圈處理,而不是將其整組輸出。
範本中的祕密
以相同的方式引用儲存的密鑰:
Authorization: Bearer {{ secrets.airtableAccessToken }}
請使用確切的語法 {{ secrets.keyName }}。以下語法均無法正常運作:
{{ secret.keyName }}- 單數{{ secrets['keyName'] }}- 括號語法
鍵名會區分大小寫。請參閱 秘密。
HTTP 請求的正文覆寫
HTTP 動作的「變數」欄位還有第二種模式。若傳入 body 鍵,它會完全取代已儲存的請求正文:
{
"body": { "anything": "you like", "shaped": ["however"] }
}
當載荷形狀由先前執行的「Shopify Flow」步驟決定時,此功能便相當實用。唯有一項例外:若您儲存的本體本身引用了「{{ variables.body }}」,則它會被視為一般變數。
測試您所寫的內容
頁面預覽功能不會解析 Liquid - - 它僅會顯示標籤的原始內容。若要查看解析後的值:
- 若要發送電子郵件,請在版面編輯器中使用「發送測試電子郵件」功能。
- 對於 HTTP 請求,請使用「測試」按鈕,該按鈕會在顯示回應的同時,一併顯示「解析後的 URL」和「解析後的內容」。
行銷版面中的取消訂閱連結
若版面的「電子郵件類型」設為「行銷」,則會額外增加兩個變數。每封行銷電子郵件的收件者皆擁有專屬的取消訂閱連結,而這些變數會將該連結置於:
{{ unsubscribe_link }}會根據「設定」中的**「取消訂閱」連結文字**(或佈局本身的文字)渲染出一個連結。{{ unsubscribe_url }}會輸出原始位址,供您自行設定樣式的按鈕或超連結使用。
<p>No longer interested? <a href="{{ unsubscribe_url }}">Unsubscribe here</a>.</p>
您無需使用這些變數:畢竟每封行銷電子郵件的頁尾都會自動附加「取消訂閱」連結。當渲染後的郵件正文已包含該連結時,頁尾便不會顯示「取消訂閱」的文字,僅會附加公司資訊。在主旨和預覽文字中,這兩項變數均不會顯示任何內容;而在交易型郵件的版面配置中,它們始終為空。請參閱 行銷電子郵件與取消訂閱。
相關
- 從 Shopify Flow 傳遞資料 - 深入探討「變數 (JSON)」欄位。
- 建立電子郵件版面配置 - 這些變數該放在哪裡。
- 行銷電子郵件與取消訂閱 - 行銷版面配置、取消訂閱的頁尾以及取消訂閱清單。
- 秘密 - 安全地儲存憑證。
- 從 Shopify Flow 發出 HTTP 請求 - 實際請求中的變數。

