Khối Liquid tùy chỉnh cho biên lai in
Có thể sử dụng khối Liquid tùy chỉnh để thêm nội dung riêng vào đầu trang hoặc chân trang của biên lai in, chẳng hạn như chi tiết đơn hàng, thông tin khách hàng, thuộc tính sản phẩm, trường siêu dữ liệu và mã vạch.
Khối Liquid tùy chỉnh hiển thị trên biên lai in đối với các đơn hàng trực tuyến và Điểm bán hàng đã hoàn tất. Chúng không hiển thị đối với đơn hàng sử dụng quy trình thanh toán ngoại tuyến.
Có thể thêm khối Liquid tùy chỉnh từ trình chỉnh sửa biên lai trực quan trong bảng điều khiển quản trị Shopify. Các giá trị được tham chiếu sẽ trích xuất từ dữ liệu của biên lai khi in. Ví dụ: mã Liquid sau đây sẽ thêm ghi chú đơn hàng vào biên lai nếu có ghi chú:
{% if order.note %}
<p>Order note: {{ order.note }}</p>
{% endif %}Trên trang này
Quy tắc cú pháp Liquid
Xem xét các quy tắc cú pháp sau trước khi xây dựng khối Liquid tùy chỉnh:
- Tên biến sử dụng chữ thường và dấu gạch dưới, một định dạng được gọi là snake_case. Ví dụ: sử dụng
order.total_price,order.customer.display_namevàorder.line_items. - Giá trị tiền là số thuần túy. Hãy định dạng bằng bộ lọc
money, ví dụ như{{ order.total_price | money }}. - Bảo vệ các giá trị tùy chọn bằng câu lệnh
ifđể không in ra dòng trống, ví dụ như{% if order.customer.email %}{{ order.customer.email }}{% endif %}. - Lặp qua các danh sách bằng câu lệnh
for, ví dụ như{% for item in order.line_items %} ... {% endfor %}. - Một số thẻ Liquid không được hỗ trợ. Không thể sử dụng
assign,capture,include,render,raw,incrementhoặcdecrement. Nếu khối sử dụng thẻ không được hỗ trợ, biên lai sẽ không được lưu và hiển thị lỗi. - Khối Liquid tùy chỉnh có thể chứa tối đa 50 KB mã.
HTML và CSS
Có thể dùng HTML cơ bản trong khối Liquid tùy chỉnh để cấu trúc nội dung, chẳng hạn như <p>, <br>, <strong>, <em>, tiêu đề, danh sách và liên kết. Nội dung sử dụng phông chữ và kích thước hiện có của biên lai.
Không thể dùng CSS để thay đổi giao diện biên lai. Các khối <style> và thuộc tính style không được hỗ trợ, do đó, khối Liquid tùy chỉnh không thể tạo kiểu lại hoặc ẩn nội dung ở nơi khác trên biên lai. Các thẻ <script>, trình xử lý sự kiện như onclick và liên kết javascript: cũng không được hỗ trợ.
Nếu khối chứa HTML không được hỗ trợ, biên lai sẽ không được lưu và hiển thị lỗi. Hãy xóa HTML không được hỗ trợ rồi lưu lại.
Biến và đối tượng
Khối Liquid tùy chỉnh có thể tham chiếu các đối tượng và biến sau đây. Một số giá trị không có trên biên lai mặc định, do đó, dùng khối Liquid tùy chỉnh là một cách để thêm các giá trị đó.
Biến cấp cao nhất
Các biến cấp cao nhất sau đây có sẵn trong khối Liquid tùy chỉnh.
| Biến | Mô tả |
|---|---|
order | Đơn hàng đang in. |
shop | Cửa hàng. |
location | Địa điểm bán lẻ. |
settings | Cài đặt hiển thị của biên lai, là các tùy chọn chuyển đổi trạng thái được định cấu hình trong trình chỉnh sửa. |
purchased_gift_cards | Thẻ quà tặng được mua trong đơn hàng này. |
staff_member_description | Nhân viên được phân bổ, khi tính năng hiển thị nhân viên đang bật. |
locale | Ngôn ngữ và vùng của biên lai, chẳng hạn như en. |
is_pickup | Đơn hàng có phải là đơn lấy hàng hay không. |
pickup_location | Địa điểm nhận hàng, nếu có. |
Đối tượng đơn hàng
| Thuộc tính | Mô tả |
|---|---|
name | Tên đơn hàng, chẳng hạn như #1001. |
created_at |
Dấu thời gian của đơn hàng. Sử dụng với bộ lọc date.
|
note | Ghi chú đơn hàng. |
subtotal_price |
Tổng phụ. Định dạng bằng bộ lọc money.
|
total_price |
Tổng tiền. Định dạng bằng bộ lọc money.
|
shipping_price |
Phí vận chuyển. Định dạng bằng bộ lọc money.
|
total_tip_received |
Tổng tiền boa. Định dạng bằng bộ lọc money.
|
balance_due |
Số tiền còn nợ. Định dạng bằng bộ lọc money.
|
change_due |
Số tiền thối lại. Định dạng bằng bộ lọc money.
|
taxes_included | Giá đã bao gồm thuế hay chưa. |
receipt_number | Số biên lai. |
barcode_content | Nội dung để mã hóa thành mã vạch. |
qr_code_content |
Nội dung để mã hóa thành mã QR. Sử dụng với bộ lọc qrcode.
|
line_items | Các mặt hàng đã mua. Thuộc tính của từng mặt hàng được liệt kê trong đối tượng mục hàng của đơn hàng. |
transactions | Các khoản thanh toán. Thuộc tính của từng khoản thanh toán được liệt kê trong đối tượng giao dịch. |
discounts | Khoản giảm giá cấp đơn hàng. Thuộc tính của từng khoản giảm giá được liệt kê trong đối tượng giảm giá. |
tax_lines | Các dòng thuế. Thuộc tính của từng dòng thuế được liệt kê trong đối tượng dòng thuế. |
refunds | Các khoản hoàn tiền của đơn hàng. |
shipping_address | Địa chỉ giao hàng. Các thuộc tính địa chỉ được liệt kê trong đối tượng địa chỉ. |
customer | Chi tiết khách hàng, được liệt kê trong đối tượng khách hàng. |
metafields | Các trường siêu dữ liệu của đơn hàng. |
Đối tượng khách hàng
Đối tượng order.customer chứa thông tin chi tiết của khách hàng.
| Thuộc tính | Mô tả |
|---|---|
display_name | Tên hiển thị của khách hàng. |
first_name | Tên của khách hàng. |
last_name | Họ của khách hàng. |
| Địa chỉ email của khách hàng. | |
phone | Số điện thoại của khách hàng. |
default_address | Địa chỉ mặc định của khách hàng. |
metafields | Các trường siêu dữ liệu của khách hàng. |
Đối tượng mục hàng trong đơn hàng
Mỗi mục trong order.line_items có chứa các thuộc tính sau.
| Thuộc tính | Mô tả |
|---|---|
name | Tên sản phẩm hoặc mục hàng. |
variant_title | Mẫu mã, ví dụ: Lớn / Màu xanh dương. |
sku | Mã SKU. |
vendor | Nhà cung cấp. |
quantity | Số lượng. |
price |
Đơn giá. Định dạng bằng bộ lọc money.
|
total_price |
Tổng cộng của mục hàng. Định dạng bằng bộ lọc money.
|
discounted_total_price |
Tổng cộng của mục hàng sau khi giảm giá. Định dạng bằng bộ lọc money.
|
discounted_unit_price |
Đơn giá sau khi giảm giá. Định dạng bằng bộ lọc money.
|
discounts | Khoản giảm giá áp dụng cho mục hàng. |
selling_plan_name | Tên đăng ký hoặc gói bán hàng, nếu có. |
staff_member_description | Nhân viên gắn với mục hàng. |
custom_attributes | Các thuộc tính của mục hàng, được truy cập bằng khóa. |
product_metafields | Các trường siêu dữ liệu của sản phẩm, được truy cập bằng khóa. |
variant_metafields | Các trường siêu dữ liệu của mẫu mã, được truy cập bằng khóa. |
Đối tượng giao dịch
Mỗi khoản thanh toán trong order.transactions chứa các thuộc tính sau. Khoản tín dụng cửa hàng đã dùng cho đơn hàng được liệt kê dưới dạng khoản thanh toán có tên là Tín dụng cửa hàng. Số dư tín dụng cửa hàng còn lại của khách hàng không có sẵn dưới dạng biến.
| Thuộc tính | Mô tả |
|---|---|
name | Tên thanh toán, ví dụ như Visa, tiền mặt hoặc tín dụng cửa hàng. |
payment_type | Mã loại thanh toán. |
amount |
Số tiền. Định dạng bằng bộ lọc money.
|
kind | Loại giao dịch. |
status | Trạng thái giao dịch. |
credit_card_number | Số thẻ đã che, nếu có. |
created_at | Dấu thời gian của giao dịch. |
additional_details | Các dòng chi tiết thanh toán bổ sung. |
Đối tượng shop
Đối tượng shop chứa thông tin chi tiết của cửa hàng.
| Thuộc tính | Mô tả |
|---|---|
name | Tên cửa hàng. |
domain | Miền của cửa hàng. |
currency | Đơn vị tiền tệ của cửa hàng. |
id | ID của cửa hàng. |
Đối tượng địa điểm
Đối tượng location chứa thông tin chi tiết của địa điểm bán lẻ.
| Thuộc tính | Mô tả |
|---|---|
name | Tên địa điểm. |
address1 | Dòng địa chỉ thứ nhất. |
address2 | Dòng địa chỉ thứ hai. |
city | Thành phố. |
province | Tỉnh hoặc tiểu bang. |
province_code | Mã tỉnh hoặc tiểu bang. |
zip | Mã ZIP hoặc mã bưu chính. |
country | Quốc gia. |
phone | Số điện thoại. |
metafields | Các trường siêu dữ liệu của địa điểm. |
Đối tượng địa chỉ
Một địa chỉ, ví dụ như order.shipping_address hoặc order.customer.default_address, có chứa các thuộc tính sau.
| Thuộc tính | Mô tả |
|---|---|
company | Tên công ty. |
name | Tên người nhận. |
address1 | Dòng địa chỉ thứ nhất. |
address2 | Dòng địa chỉ thứ hai. |
city | Thành phố. |
province | Tỉnh hoặc tiểu bang. |
province_code | Mã tỉnh hoặc tiểu bang. |
zip | Mã ZIP hoặc mã bưu chính. |
country | Quốc gia. |
country_code | Mã quốc gia. |
phone | Số điện thoại. |
Đối tượng giảm giá
Mỗi khoản giảm giá trong order.discounts hoặc item.discounts có chứa các thuộc tính sau.
| Thuộc tính | Mô tả |
|---|---|
description | Mô tả khoản giảm giá. |
amount | Số tiền giảm giá. Định dạng bằng bộ lọc money. |
percentage | Tỷ lệ phần trăm giảm giá. |
Đối tượng dòng thuế
Mỗi dòng thuế trong order.tax_lines có chứa các thuộc tính sau.
| Thuộc tính | Mô tả |
|---|---|
title | Tiêu đề thuế. |
rate | Mức thuế dưới dạng số thập phân. |
rate_percentage | Mức thuế dưới dạng phần trăm. |
price | Số tiền thuế. Định dạng bằng bộ lọc money. |
taxable_amount | Số tiền chịu thuế. Định dạng bằng bộ lọc money. |
Đối tượng thẻ quà tặng
Mỗi thẻ quà tặng trong purchased_gift_cards có chứa các thuộc tính sau.
| Thuộc tính | Mô tả |
|---|---|
code | Mã thẻ quà tặng. |
masked_code | Mã thẻ quà tặng đã ẩn. |
balance | Số dư thẻ quà tặng. Định dạng bằng bộ lọc money. |
created_at | Dấu thời gian thẻ quà tặng. |
qr_code_content | Nội dung cần mã hóa trong mã QR. |
Trường siêu dữ liệu và thuộc tính
Trường siêu dữ liệu và thuộc tính mục hàng có hai dạng.
Trường siêu dữ liệu và thuộc tính mục hàng được gắn khóa. Truy cập trực tiếp giá trị bằng khóa tương ứng:
{{ item.product_metafields.care_instructions }}
{{ item.custom_attributes.engraving }}Trường siêu dữ liệu đơn hàng và khách hàng là các danh sách. Chạy vòng lặp qua các danh sách này:
{% for m in order.metafields %}
{{ m.namespace }}.{{ m.key }}: {{ m.value }}
{% endfor %}Các khóa được chuẩn hóa về dạng snake_case. Một khóa như Care Instructions hoặc careInstructions được truy cập bằng dạng care_instructions. Luôn tham chiếu các giá trị có khóa ở dạng chữ thường và dấu gạch dưới.
Tính khả dụng của trường siêu dữ liệu đơn hàng và khách hàng phụ thuộc vào việc các trường này có tồn tại trong bản ghi hay không.
Bộ lọc Liquid
Bạn có thể dùng bộ lọc để định dạng thông tin trong khối Liquid tùy chỉnh. Để áp dụng bộ lọc, hãy thêm ký tự gạch đứng |, rồi thêm bộ lọc vào bên trong kết quả đầu ra Liquid, ví dụ như {{ order.total_price | money }}.
Bạn cũng có thể dùng các bộ lọc Liquid tiêu chuẩn. Để tìm hiểu thêm về các bộ lọc Liquid, hãy tham khảo Tài liệu tham khảo về bộ lọc.
| Bộ lọc | Ví dụ | Mô tả |
|---|---|---|
money | {{ order.total_price | money }} | Định dạng số tiền theo đơn vị tiền tệ trên biên lai. |
date | {{ order.created_at | date: '%B %e, %Y' }} | Định dạng ngày hoặc giờ. |
percent | {{ tax_line.rate | percent }} | Định dạng số thập phân dưới dạng phần trăm, chẳng hạn như 0,2 thành 20%. |
t | {{ 'receipt.total' | t }} | Trả về một nhãn đã dịch. |
barcode | {{ order.barcode_content | barcode }} | Kết xuất mã vạch. |
qrcode | {{ order.qr_code_content | qrcode }} | Kết xuất mã QR. |
Ví dụ về khối Liquid tùy chỉnh
Các ví dụ sau bổ sung nội dung không có trên mẫu biên lai in mặc định.
Để thêm ghi chú đơn hàng nếu có, hãy dùng mã Liquid sau:
{% if order.note %}<p>Note: {{ order.note }}</p>{% endif %}Để thêm SKU bên cạnh mỗi mặt hàng, hãy dùng mã Liquid sau:
{% for item in order.line_items %}
<p>{{ item.name }} — {{ item.sku }} ×{{ item.quantity }}</p>
{% endfor %}Để thêm một thuộc tính mục hàng, chẳng hạn như thông tin khắc chữ, hãy dùng mã Liquid sau:
{% for item in order.line_items %}
{% if item.custom_attributes.engraving %}
<p>{{ item.name }} — Engraving: {{ item.custom_attributes.engraving }}</p>
{% endif %}
{% endfor %}Để thêm trường siêu dữ liệu sản phẩm, chẳng hạn như hướng dẫn bảo quản, hãy dùng mã Liquid sau:
{% for item in order.line_items %}
{% if item.product_metafields.care_instructions %}
<p>{{ item.name }}: {{ item.product_metafields.care_instructions }}</p>
{% endif %}
{% endfor %}Để thêm trường siêu dữ liệu khách hàng, hãy dùng mã Liquid sau:
{% for m in order.customer.metafields %}
{% if m.key == 'loyalty_tier' %}<p>Loyalty tier: {{ m.value }}</p>{% endif %}
{% endfor %}Để thêm mã QR liên kết với đơn hàng, hãy dùng mã Liquid sau:
{{ order.qr_code_content | qrcode }}