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 %}

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_nameorder.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, increment hoặc decrement. 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.

Mô tả về các biến cấp cao nhất có sẵn cho khối Liquid tùy chỉnh
BiếnMô 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

Mô tả về đối tượng đơn hàng
Thuộc tínhMô 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.

Mô tả đối tượng khách hàng
Thuộc tínhMô 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.
email
Đị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.

Mô tả đối tượng mục hàng trong đơn hàng
Thuộc tínhMô 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.

Mô tả đối tượng giao dịch
Thuộc tínhMô 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.

Mô tả đối tượng shop
Thuộc tínhMô 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ẻ.

Mô tả đối tượng địa điểm
Thuộc tínhMô 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.

Mô tả đối tượng địa chỉ
Thuộc tínhMô 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.

Mô tả đối tượng giảm giá
Thuộc tínhMô 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.

Mô tả đối tượng dòng thuế
Thuộc tínhMô 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.

Mô tả đối tượng thẻ quà tặng
Thuộc tínhMô 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.

Mô tả về các bộ lọc áp dụng được cho khối Liquid tùy chỉnh
Bộ lọcVí 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 }}