Biến Liquid trong Shopify Flow

Biến là phần giữ chỗ được thay thế bằng các giá trị khi quy trình làm việc chạy. Những biến này mô tả thuộc tính của khách hàng, đơn hàng và sản phẩm có liên quan đến quy trình làm việc. Ví dụ: Có các biến cho mã đơn hàng, giá đơn hàng, tên khách hàng, v.v. Có thể sử dụng biến trong điều kiện để kiểm soát logic trong quy trình làm việc hoặc xuất dữ liệu trong một thao tác.

Giới thiệu về Liquid

Liquid là ngôn ngữ mẫu dùng để truy cập biến trong thao tác và viết mã trong Flow. Flow sử dụng biến Liquid tuân thủ chặt chẽ thư viện nguồn mở nhất. Chủ đề Shopify sử dụng biến Liquid khác, nhưng biến Liquid này đặc trưng với các chủ đề và bao gồm nhiều bộ lọc và thẻ hơn những gì Flow hỗ trợ, cũng như có cú pháp khác để truy cập biến.

Biến Liquid

Bạn có thể thêm biến Liquid vào bất kỳ trường văn bản nào có chứa liên kết Thêm biến. Nhấp vào liên kết Thêm biến bên dưới trường liên quan, sau đó chọn một biến trong danh sách.

ảnh hiển thị những trường chấp nhận liquid

Các biến trong danh sách Thêm biến được lọc để bạn chỉ nhìn thấy các biến trả về theo từng bước trước bước hiện tại, ví dụ như yếu tố kích hoạt. Ví dụ: Yếu tố kích hoạt Đã tạo đơn hàng cung cấp tài nguyên đơn hàng và cửa hàng, sau đó cho phép bạn sử dụng mọi biến liên quan đến đơn hàng hoặc cài đặt cửa hàng mà bạn có thể truy cập trong Admin API GraphQL. Sau khi bạn chọn một biến trong danh sách, biến này sẽ được định dạng phù hợp và thêm vào hộp văn bản giúp bạn.

Bạn cũng có thể viết liquid trực tiếp vào khối văn bản. Ví dụ: Bạn có thể sử dụng biến {{ order.name }} để hiển thị chuỗi đơn hàng xuất hiện trong Shopify Admin, ví dụ như order-123.

Vì Flow sử dụng Admin API GraphQL để truy xuất dữ liệu bạn dùng trong Liquid nên cú pháp biến sẽ sử dụng "camel case". Ví dụ: Để truy cập ngày tạo sản phẩm, nhập {{ product.createdAt }}. Nếu sử dụng cú pháp Liquid trong chủ đề Shopify thì bạn có sẽ nhập {{ product.created_at }}.

Thẻ Liquid có điều kiện và lặp lại

Đôi khi bạn sẽ cần sử dụng thẻ Liquid để thực hiện những việc sau:

  • Viết câu lệnh có điều kiện, ví dụ như xác định xem tổng giá trị đơn hàng có lớn hơn $100 không
  • Lặp lại lệnh trong toàn bộ danh sách đối tượng, ví dụ như xuất dữ liệu của từng mục hàng trong một đơn hàng

Bạn có thể dùng thẻ Liquid để viết những câu lệnh này và lặp lại qua các đối tượng.

Ví dụ: Liquid sau đây sẽ hiển thị mã đơn hàng nếu tổng giá trị đơn hàng lớn hơn 100 USD:

{% if order.totalPriceSet.shopMoney.amount > 100 %}
  Order number: {{ order.name }}
{% endif %}

Bạn cũng có thể sử dụng vòng lặp for để lặp lại lệnh trong toàn bộ danh sách đối tượng, ví dụ như mục hàng cho đơn hàng. Ví dụ: Liquid sau đây sẽ hiển thị tên của từng mục hàng trong đơn hàng:

{% for li in order.lineItems %}
  {{ li.title }}
{% endfor %}

Flow hỗ trợ các thẻ có điều kiện (hoặc thẻ điều khiển luồng) sau của Liquid:

Flow cũng hỗ trợ các thẻ lặp lại sau của Liquid:

Bộ lọc

Bộ lọc cho phép bạn chuyển đổi dữ liệu trong Liquid. Flow hỗ trợ tất cả các bộ lọc Liquid nguồn mở.

Ví dụ: Liquid sau sẽ xóa tiền tố khỏi tên đơn hàng và xuất ra những gì còn lại: {{ order.name | remove: "Order-" }}

Ngoài bộ lọc Liquid tiêu chuẩn, Flow còn cung cấp bộ lọc ngày để có được ngày tương đối với ngày khác nhằm hỗ trợ yếu tố kích hoạt Thời gian đã lên lịch và tính năng Nhận dữ liệu. Những bộ lọc này là: date_minusdate_plus.

Để trả về ngày là một ngày trong tương lai:{{ "now" | date_plus: "1 day" }}

Để trả về ngày là một ngày trong quá khứ:{{ "now" | date_minus: "1 day" }}

Những bộ lọc này chấp nhận second, minute, day, week, monthyear làm đơn vị thời lượng, cả số ít (ví dụ như second) và số nhiều (ví dụ như seconds). Ngoài định dạng này, bạn cũng có thể cung cấp số nguyên (số giây). Ví dụ:{{ "now" | date_minus: 3600 }}

Bạn cũng có thể cung cấp chuỗi thời lượng ISO8601, trong đó P1Y2D nghĩa là 1 năm 2 ngày:{{ "now" | date_minus: "P1Y2D" }}

Những lưu ý khi sử dụng biến Liquid trong bộ lọc

  • Flow không hỗ trợ ký hiệu dấu chấm có sẵn cho một số bộ lọc. Ví dụ: Flow hỗ trợ {{ order.lineItems | size }}, nhưng không hỗ trợ {{ order.lineItems.size }}.
  • Flow không hỗ trợ ký hiệu dấu chấm cho trường thông tin bổ sung. Ví dụ: Bạn không thể sử dụng {{ order.metafields.custom.hold_note }}. Thay vào đó, bạn phải lặp lại các trường thông tin bổ sung như đã nêu trong ví dụ.
  • Flow không hỗ trợ sử dụng chỉ mục để truy cập các mặt hàng trong danh sách. Ví dụ: Bạn không thể sử dụng {{ order.lineItems[0].title }}. Thay vào đó, bạn phải lặp lại các mục hàng như được nêu trong ví dụ.

Ví dụ

Để tìm hiểu rõ hơn về cách sử dụng biến Liquid, hãy xem xét các ví dụ sau.

Xuất giá trị trường thông tin bổ sung

Bạn muốn xuất giá trị của trường thông tin bổ sung đơn hàng trong email. Trường thông tin bổ sung là một chuỗi và có không gian tên custom và một khóa hold_note. Giá trị của trường thông tin bổ sung là Please wait to deliver this order until April 1.. Bạn tạo một quy trình làm việc bằng yếu tố kích hoạt Đã tạo đơn hàng và sử dụng thao tác Gửi email nội bộ. Trong mục Thông báo của thao tác Gửi email nội bộ, bạn sử dụng các biến sau.

Ví dụ về cách sử dụng biến để xuất trường thông tin bổ sung đơn hàng.
Nhập vào Thông tin đầu ra
{% assign hold_note = order.metafields | where: "namespace", "custom" | where: "key", "hold_note" | first %}
Đơn hàng có ghi chú tạm dừng: {{ hold_note.value }}
Đơn hàng có ghi chú tạm dừng: Vui lòng chờ giao đơn hàng này đến ngày 1 tháng 4.

Chuyển đổi danh sách thẻ thành trường thông tin bổ sung

Bạn muốn chuyển đổi một bộ thẻ thành một trường thông tin bổ sung làdanh sách các trường văn bản một dòng. Bạn tạo một quy trình làm việc bằng cách sử dụng yếu tố kích hoạt Đã thêm sản phẩm vào cửa hàng và sử dụng thao tác Cập nhật trường thông tin bổ sung sản phẩm. Trong mục Giá trị của thao tác Cập nhật trường thông tin bổ sung sản phẩm, bạn thêm mã liquid sau. Ví dụ này giả định bạn chỉ cần đặt giá trị một lần khi tạo sản phẩm và sản phẩm có hai thẻ liên quan: color:redcolor:orange.

Liquid mẫu để đặt danh sách trường văn bản một dòng.
Nhập vào Thông tin đầu ra
{% capture mf_value %}
{%- for tags_item in product.tags -%}
{%- if tags_item contains "color:" -%}
"{{- tags_item | remove_first: "color:" | strip -}}",
{%- endif -%}
{%- endfor -%}
{% endcapture -%}
[{{mf_value | remove_last: ","}}]
["red","orange"]

Viết email động cho đơn hàng

Bạn muốn tạo quy trình làm việc để gửi email cho nhân viên khi khách hàng chi tiêu trên 500 USD cho một đơn hàng. Bạn tạo quy trình làm việc bằng yếu tố kích hoạt Đã tạo đơn hàng, đặt điều kiện là true nếu tổng giá trị đơn hàng trên 500 USD và sử dụng thao tác Gửi email nội bộ. Trong mục Thông báo của thao tác Gửi email nội bộ, bạn sử dụng các biến sau.

Ví dụ về sử dụng biến để cung cấp thông tin chi tiết về khách hàng.
Nhập vào Thông tin đầu ra
Hãy gửi ghi chú cảm ơn cá nhân cho {{ order.customer.firstName }} {{ order.customer.lastName }}({{ order.customer.email }}) vì đã đặt hàng có giá trị {{ order.totalPriceSet.shopMoney.amount }} USD. Hãy gửi ghi chú cảm ơn cá nhân cho Nguyễn Tuyết Mai (tuyetmai@example.com) vì đã đặt đơn hàng có giá trị 763,42 USD.

Viết email động cho sản phẩm còn ít hàng

Bạn thấy cần thông báo cho nhân viên khi hàng trong kho của sản phẩm sắp hết và cần đặt thêm hàng để lưu kho. Bạn tạo quy trình làm việc bắt đầu bằng yếu tố kích hoạt Đã thay đổi số lượng hàng tồn kho và đặt điều kiện là true nếu số lượng hàng tồn kho trước đó nhỏ hơn hoặc bằng 10. Trong mục Thông báo của thao tác Gửi email nội bộ, bạn sử dụng các biến sau.

Ví dụ về sử dụng biến để cung cấp chi tiết mặt hàng.
Nhập vào Thông tin đầu ra
Hãy đặt hàng lại {{ product.title }}. Gửi email đến địa chỉ owner@store.com để xác minh họ đã nhận được đơn đặt hàng. Hãy đặt hàng lại Quần legging cạp cao - Màu đen. Gửi email đến địa chỉ owner@example.com để xác minh họ đã nhận được đơn đặt hàng.

Viết email động để thông báo cho nhân viên về đơn hàng gian lận

Bạn muốn hủy đơn hàng có mức độ rủi ro cao nhưng ưu tiên để nhân viên hủy đơn hàng theo cách thủ công. Bạn tạo quy trình làm việc bắt đầu bằng yếu tố kích hoạt Đã tạo đơn hàng và đặt điều kiện là true nếu mức độ rủi ro của đơn hàng cao. Trong mục Thông báo của thao tác Gửi email nội bộ, bạn sử dụng các biến sau.

Ví dụ về sử dụng biến để cung cấp thông tin về đơn hàng gian lận.
Nhập vào Thông tin đầu ra
Cửa hàng Shopify của chúng tôi đã nhận được đơn hàng có nguy cơ gian lận cao. Chúng tôi muốn hủy đơn hàng này ngay lập tức trước khi gửi đơn hàng đến bộ phận sản xuất:

{{ order.name }}
{{ order.billingAddress.lastName }}, {{ order.billingAddress.firstName }}
{{ order.email }}

Vui lòng xác nhận trạng thái đơn hàng mới. Xin cảm ơn!
Cửa hàng Shopify của chúng tôi đã nhận được đơn hàng có nguy cơ gian lận cao. Chúng tôi muốn hủy đơn hàng này ngay lập tức trước khi gửi đơn hàng đến bộ phận sản xuất:

#1001
Nguyễn, Mai
tuyetmai@example.com

Vui lòng xác nhận trạng thái đơn hàng mới. Xin cảm ơn!

Xuất các mục hàng cho đơn hàng bằng vòng lặp for

Khi nhận được đơn hàng, bạn nên gửi tin nhắn chứa các sản phẩm đã được đặt. Bạn có thể gửi tin nhắn bằng cách sử dụng for loop để thực hiện một khối mã nhiều lần. Các trường văn bản hỗ trợ biến cũng hỗ trợ vòng lặp for và đối tượng forloop.

Ví dụ: Bạn muốn tạo quy trình làm việc trả về danh sách tất cả SKU và số lượng trong đơn hàng. Trong mục Thông báo của thao tác Gửi email nội bộ, bạn sử dụng các biến sau.

Ví dụ về sử dụng vòng lặp for để cung cấp thông tin đơn hàng.
Nhập vào Thông tin đầu ra
Tóm tắt đơn hàng:
{% for a in order.lineItems %}
SKU: {{a.sku}} ( {{a.quantity}} ),
{% endfor %}
Tóm tắt đơn hàng:
8987097979 (50)
8877778887 (3)
888998898B (1)

Xuất các mục hàng cho đơn hàng bằng vòng lặp for cùng thông tin bổ sung

Bạn quyết định thêm thông tin vào email, bao gồm tên sản phẩm, SKU, giá mỗi mặt hàng và thông tin vận chuyển của khách hàng. Trong mục Thông báo của thao tác Gửi email nội bộ, bạn sử dụng các biến sau.

Ví dụ về sử dụng vòng lặp for để cung cấp thêm thông tin đơn hàng.
Nhập vào Thông tin đầu ra
Tóm tắt đơn hàng:
{% for a in order.lineItems %}
Sản phẩm: {{a.title}}
SKU: {{a.sku}}
Giá (trên mỗi đơn vị): $ {{a.originalUnitPriceSet.shopMoney.amount}}
Số lượng: {{a.quantity}}
{% endfor %}
Tóm tắt đơn hàng:
Sản phẩm: Quần legging cạp cao - Màu đen
SKU: 8987097979
Giá (trên mỗi đơn vị): 8.49 USD
Số lượng: 5
Sản phẩm: Tất thể thao - Màu xanh dương
SKU: 888998898B
Giá (trên mỗi đơn vị): 5,61 USD
Số lượng: 2

Xuất một số mục hàng bằng cách kết hợp vòng lặp for với câu lệnh if

Bạn cần theo dõi các mặt hàng đã bán do nhà cung cấp nào đó cung cấp. Trong mục Thông báo của thao tác Gửi email nội bộ, bạn sử dụng các biến sau và thêm câu lệnh if vào for loop.

Ví dụ về sử dụng vòng lặp for và câu lệnh if để cung cấp thông tin đơn hàng cho nhà cung cấp cụ thể.
Nhập vào Thông tin đầu ra
Sản phẩm đã bán của Acme:
{% for x in order.lineItems %}
{% if x.vendor == 'acme-vendor' %}
Tên sản phẩm: {{x.title}}
SKU: {{x.sku}}
{% endif %}
{% endfor %}
Sản phẩm đã bán của Acme:
Tên sản phẩm: Quần legging cạp cao - Màu đen
SKU: 8987097979

Đối tượng dữ liệu phức tạp trong Shopify Flow

Flow cho phép bạn truy cập gần như mọi dữ liệu có trong GraphQL Admin API Dữ liệu này bao gồm các đối tượng dữ liệu phức tạp, ví dụ như danh sách và đối tượng. Tuy nhiên, có một số hạn chế đối với những việc bạn có thể làm với những đối tượng này. Mục này nêu lên những hạn chế này và cung cấp ví dụ về cách làm việc với chúng.

Thay vì gọi trực tiếp danh sách và đối tượng, bạn nên lặp lại danh sách và chỉ thêm các trường bạn muốn.

Ví dụ, thay vì gọi {{ order.lineItems }} trực tiếp, hãy dùng định dạng sau để gọi các trường cụ thể. Những ví dụ dưới đây bao gồm tất cả các trường được thêm vào khi gọi trực tiếp danh sách hoặc đối tượng. Sao chép và dán các trường bạn cần.

Bạn đã sẵn sàng bán hàng với Shopify?

Dùng thử miễn phí