บล็อก Liquid แบบกำหนดเองสำหรับใบเสร็จที่พิมพ์
คุณสามารถใช้บล็อก Liquid แบบกำหนดเองเพื่อเพิ่มเนื้อหาของคุณเองในส่วนหัวหรือส่วนท้ายของใบเสร็จที่พิมพ์ เช่น รายละเอียดคำสั่งซื้อ ข้อมูลลูกค้า คุณสมบัติของสินค้า เมตาฟิลด์ และบาร์โค้ด
บล็อก Liquid แบบกำหนดเองจะแสดงบนใบเสร็จที่พิมพ์สำหรับคำสั่งซื้อออนไลน์และคำสั่งซื้อ Point of Sale ที่เสร็จสมบูรณ์ โดยจะไม่แสดงสำหรับคำสั่งซื้อที่ใช้การชำระเงินออฟไลน์
คุณสามารถเพิ่มบล็อก Liquid แบบกำหนดเองจากตัวแก้ไขใบเสร็จแบบมองเห็นได้ในส่วนผู้ดูแล Shopify ค่าต่างๆ ที่คุณอ้างอิงจะถูกดึงมาจากข้อมูลของใบเสร็จเมื่อพิมพ์ใบเสร็จ ตัวอย่างเช่น โค้ด Liquid ต่อไปนี้จะเพิ่มหมายเหตุคำสั่งซื้อในใบเสร็จเมื่อมีหมายเหตุอยู่:
{% if order.note %}
<p>Order note: {{ order.note }}</p>
{% endif %}ในหน้านี้
กฎไวยากรณ์ Liquid
โปรดตรวจสอบกฎไวยากรณ์ต่อไปนี้ก่อนที่คุณจะสร้างบล็อก Liquid แบบกำหนดเอง:
- ชื่อตัวแปรใช้ตัวอักษรพิมพ์เล็กและเครื่องหมายขีดล่าง (underscore) ซึ่งเป็นรูปแบบที่เรียกว่า snake_case ตัวอย่างเช่น ใช้
order.total_price,order.customer.display_nameและorder.line_items - มูลค่าเงินเป็นตัวเลขธรรมดา ให้จัดรูปแบบโดยใช้ตัวกรอง
moneyเช่น{{ order.total_price | money }} - ตรวจสอบค่าตัวเลือกด้วยคำสั่ง
ifเพื่อไม่ให้พิมพ์บรรทัดว่างออกมา เช่น{% if order.customer.email %}{{ order.customer.email }}{% endif %} - วนซ้ำรายการด้วยคำสั่ง
forเช่น{% for item in order.line_items %} ... {% endfor %} - แท็ก Liquid บางรายการไม่รองรับการใช้งาน คุณไม่สามารถใช้
assign,capture,include,render,raw,incrementหรือdecrementหากบล็อกของคุณใช้แท็กที่ไม่รองรับ ใบเสร็จของคุณก็จะไม่บันทึกและคุณจะพบข้อผิดพลาด - บล็อก Liquid แบบกำหนดเองสามารถมีโค้ดได้สูงสุด 50 KB
HTML และ CSS
คุณสามารถใช้ HTML พื้นฐานในบล็อก Liquid แบบกำหนดเองเพื่อจัดโครงสร้างเนื้อหาของคุณ เช่น <p>, <br>, <strong>, <em> ส่วนหัว รายการ และลิงก์ เนื้อหาของคุณจะใช้แบบอักษรและขนาดที่มีอยู่ของใบเสร็จ
คุณไม่สามารถใช้ CSS เพื่อเปลี่ยนรูปลักษณ์ของใบเสร็จได้ ไม่รองรับการใช้งานบล็อก <style> และคุณลักษณะ style เพื่อให้บล็อก Liquid แบบกำหนดเองไม่สามารถเปลี่ยนรูปแบบหรือซ่อนเนื้อหาในส่วนอื่นของใบเสร็จได้ นอกจากนี้ยังไม่รองรับการใช้งานแท็ก <script> ตัวจัดการเหตุการณ์ เช่น onclick และลิงก์ javascript: อีกด้วย
หากบล็อกของคุณมี HTML ที่ไม่รองรับ ใบเสร็จของคุณจะไม่บันทึกและคุณจะพบข้อผิดพลาด โปรดลบ HTML ที่ไม่รองรับออกแล้วบันทึกอีกครั้ง
ตัวแปรและออบเจ็กต์
บล็อก Liquid แบบกำหนดเองสามารถอ้างอิงออบเจ็กต์และตัวแปรต่อไปนี้ ค่าบางรายการจะไม่อยู่ในใบเสร็จตามค่าเริ่มต้น ดังนั้นบล็อก Liquid แบบกำหนดเองจึงเป็นวิธีหนึ่งในการเพิ่มค่าดังกล่าว
ตัวแปรระดับบนสุด
ตัวแปรระดับบนสุดต่อไปนี้สามารถใช้งานได้ในบล็อก Liquid แบบกำหนดเอง
| ตัวแปร | คำอธิบาย |
|---|---|
order | คำสั่งซื้อที่กำลังพิมพ์ |
shop | ร้านค้า |
location | สาขาร้านค้าปลีก |
settings | การตั้งค่าการแสดงผลของใบเสร็จ ซึ่งเป็นปุ่มสลับที่กำหนดค่าไว้ในตัวแก้ไข |
purchased_gift_cards | บัตรของขวัญที่ซื้อในคำสั่งซื้อนี้ |
staff_member_description | พนักงานที่ระบุไว้ เมื่อเปิดใช้งานการแสดงข้อมูลพนักงาน |
locale | ตำแหน่งที่ตั้งของใบเสร็จ เช่น en |
is_pickup | คำสั่งซื้อนั้นเป็นคำสั่งซื้อแบบรับสินค้าหรือไม่ |
pickup_location | ตำแหน่งที่ตั้งในการรับสินค้า หากมี |
ออบเจ็กต์คำสั่งซื้อ
| คุณสมบัติ | คำอธิบาย |
|---|---|
name | ชื่อคำสั่งซื้อ เช่น #1001 |
created_at |
ประทับเวลาของคำสั่งซื้อ ใช้งานร่วมกับตัวกรอง date
|
note | หมายเหตุคำสั่งซื้อ |
subtotal_price |
ยอดรวม ให้จัดรูปแบบด้วยตัวกรอง money
|
total_price |
ยอดรวมสุทธิ ให้จัดรูปแบบด้วยตัวกรอง money
|
shipping_price |
ค่าจัดส่งที่เรียกเก็บ ให้จัดรูปแบบด้วยตัวกรอง money
|
total_tip_received |
ยอดทิป ให้จัดรูปแบบด้วยตัวกรอง money
|
balance_due |
ยอดที่ค้างชำระ ให้จัดรูปแบบด้วยตัวกรอง money
|
change_due |
เงินทอนที่ให้ลูกค้า ให้จัดรูปแบบด้วยตัวกรอง money
|
taxes_included | ราคารวมภาษีแล้วหรือไม่ |
receipt_number | หมายเลขใบเสร็จ |
barcode_content | เนื้อหาที่จะเข้ารหัสในบาร์โค้ด |
qr_code_content |
เนื้อหาที่จะเข้ารหัสในคิวอาร์โค้ด ใช้งานร่วมกับตัวกรอง qrcode
|
line_items | รายการที่สั่งซื้อ คุณสมบัติของแต่ละรายการจะแสดงอยู่ในออบเจ็กต์สินค้าเฉพาะรายการในคำสั่งซื้อ |
transactions | การชำระเงิน คุณสมบัติของการชำระเงินแต่ละรายการจะแสดงอยู่ในออบเจ็กต์ธุรกรรม |
discounts | ส่วนลดระดับคำสั่งซื้อ คุณสมบัติของส่วนลดแต่ละรายการจะแสดงอยู่ในออบเจ็กต์ส่วนลด |
tax_lines | รายการภาษี คุณสมบัติของรายการภาษีแต่ละรายการจะแสดงอยู่ในออบเจ็กต์รายการภาษี |
refunds | การคืนเงินของคำสั่งซื้อ |
shipping_address | ที่อยู่ที่จัดส่ง คุณสมบัติที่อยู่จะแสดงอยู่ในอ็อบเจ็กต์ที่อยู่ |
customer | รายละเอียดของลูกค้า ซึ่งแสดงอยู่ในอ็อบเจ็กต์ลูกค้า |
metafields | เมตาฟิลด์คำสั่งซื้อ |
อ็อบเจ็กต์ลูกค้า
อ็อบเจ็กต์ order.customer จะมีรายละเอียดของลูกค้า
| คุณสมบัติ | คำอธิบาย |
|---|---|
display_name | ชื่อที่แสดงของลูกค้า |
first_name | ชื่อจริงของลูกค้า |
last_name | นามสกุลของลูกค้า |
| ที่อยู่อีเมลของลูกค้า | |
phone | หมายเลขโทรศัพท์ของลูกค้า |
default_address | ที่อยู่เริ่มต้นของลูกค้า |
metafields | เมตาฟิลด์ลูกค้า |
อ็อบเจ็กต์สินค้าเฉพาะรายการของคำสั่งซื้อ
แต่ละรายการใน order.line_items จะมีคุณสมบัติดังต่อไปนี้
| คุณสมบัติ | คำอธิบาย |
|---|---|
name | ชื่อสินค้าหรือชื่อเฉพาะรายการ |
variant_title | ตัวเลือกสินค้า เช่น ใหญ่ / สีน้ำเงิน |
sku | SKU |
vendor | ผู้ขาย |
quantity | จำนวน |
price |
ราคาต่อหน่วย จัดรูปแบบด้วยตัวกรอง money
|
total_price |
ยอดรวมของรายการ จัดรูปแบบด้วยตัวกรอง money
|
discounted_total_price |
ยอดรวมของรายการหลังหักส่วนลด จัดรูปแบบด้วยตัวกรอง money
|
discounted_unit_price |
ราคาต่อหน่วยหลังหักส่วนลด จัดรูปแบบด้วยตัวกรอง money
|
discounts | ส่วนลดที่ใช้กับรายการนี้ |
selling_plan_name | ชื่อการสมัครสมาชิกหรือแผนการขาย (หากมี) |
staff_member_description | พนักงานที่เกี่ยวข้องกับรายการนี้ |
custom_attributes | คุณสมบัติของสินค้าเฉพาะรายการ เข้าถึงได้ด้วยคีย์ |
product_metafields | เมตาฟิลด์สินค้า เข้าถึงได้ด้วยคีย์ |
variant_metafields | เมตาฟิลด์ตัวเลือกสินค้า เข้าถึงได้ด้วยคีย์ |
อ็อบเจ็กต์ธุรกรรม
การชำระเงินแต่ละรายการใน order.transactions จะมีคุณสมบัติดังต่อไปนี้ เครดิตร้านค้าที่ใช้ในคำสั่งซื้อจะแสดงเป็นการชำระเงินในชื่อเครดิตร้านค้า ยอดคงเหลือของเครดิตร้านค้าของลูกค้าไม่สามารถใช้เป็นตัวแปรได้
| คุณสมบัติ | คำอธิบาย |
|---|---|
name | ชื่อการชำระเงิน เช่น Visa, เงินสด หรือเครดิตร้านค้า |
payment_type | รหัสประเภทการชำระเงิน |
amount |
จำนวนเงิน จัดรูปแบบด้วยตัวกรอง money
|
kind | ชนิดของธุรกรรม |
status | สถานะของธุรกรรม |
credit_card_number | หมายเลขบัตรที่ถูกปิดบังไว้ (หากมี) |
created_at | ประทับเวลาของธุรกรรม |
additional_details | รายการรายละเอียดการชำระเงินเพิ่มเติม |
อ็อบเจ็กต์ร้านค้า
อ็อบเจ็กต์ shop จะมีรายละเอียดของร้านค้า
| คุณสมบัติ | คำอธิบาย |
|---|---|
name | ชื่อร้านค้า |
domain | โดเมนของร้านค้า |
currency | สกุลเงินของร้านค้า |
id | ID ของร้านค้า |
อ็อบเจ็กต์ตำแหน่งที่ตั้ง
อ็อบเจ็กต์ location จะมีรายละเอียดตำแหน่งที่ตั้งของร้านค้าปลีก
| คุณสมบัติ | คำอธิบาย |
|---|---|
name | ชื่อตำแหน่งที่ตั้ง |
address1 | ที่อยู่บรรทัดแรก |
address2 | ที่อยู่บรรทัดที่สอง |
city | เมือง |
province | รัฐหรือจังหวัด |
province_code | รหัสรัฐหรือรหัสจังหวัด |
zip | รหัส ZIP หรือรหัสไปรษณีย์ |
country | ประเทศ |
phone | หมายเลขโทรศัพท์ |
metafields | เมตาฟิลด์ตำแหน่งที่ตั้ง |
อ็อบเจ็กต์ที่อยู่
ที่อยู่ เช่น order.shipping_address หรือ order.customer.default_addressจะมีคุณสมบัติดังต่อไปนี้
| คุณสมบัติ | คำอธิบาย |
|---|---|
company | ชื่อบริษัท |
name | ชื่อผู้รับ |
address1 | ที่อยู่บรรทัดแรก |
address2 | ที่อยู่บรรทัดที่สอง |
city | เมือง |
province | รัฐหรือจังหวัด |
province_code | รหัสรัฐหรือรหัสจังหวัด |
zip | รหัส ZIP หรือรหัสไปรษณีย์ |
country | ประเทศ |
country_code | รหัสประเทศ |
phone | หมายเลขโทรศัพท์ |
อ็อบเจ็กต์ส่วนลด
ส่วนลดแต่ละรายการใน order.discounts หรือ item.discounts จะมีคุณสมบัติดังต่อไปนี้
| คุณสมบัติ | คำอธิบาย |
|---|---|
description | คำอธิบายส่วนลด |
amount | จำนวนส่วนลด จัดรูปแบบด้วยตัวกรอง money |
percentage | เปอร์เซ็นต์ส่วนลด |
อ็อบเจ็กต์รายการภาษี
รายการภาษีแต่ละรายการใน order.tax_lines จะมีคุณสมบัติดังต่อไปนี้
| คุณสมบัติ | คำอธิบาย |
|---|---|
title | ชื่อภาษี |
rate | อัตราภาษีในรูปแบบทศนิยม |
rate_percentage | อัตราภาษีในรูปแบบเปอร์เซ็นต์ |
price | จำนวนภาษี จัดรูปแบบด้วยตัวกรอง money |
taxable_amount | จำนวนเงินที่ต้องเสียภาษี จัดรูปแบบด้วยตัวกรอง money |
อ็อบเจ็กต์บัตรของขวัญ
บัตรของขวัญแต่ละใบใน purchased_gift_cards จะมีคุณสมบัติดังต่อไปนี้
| คุณสมบัติ | คำอธิบาย |
|---|---|
code | รหัสบัตรของขวัญ |
masked_code | รหัสบัตรของขวัญที่ถูกปกปิด |
balance | ยอดคงเหลือของบัตรของขวัญ จัดรูปแบบด้วยตัวกรอง money |
created_at | ประทับเวลาของบัตรของขวัญ |
qr_code_content | เนื้อหาที่จะเข้ารหัสในคิวอาร์โค้ด |
เมตาฟิลด์และคุณสมบัติ
เมตาฟิลด์และคุณสมบัติสินค้าเฉพาะรายการมี 2 รูปแบบ
เมตาฟิลด์และคุณสมบัติของสินค้าเฉพาะรายการจะมีการกำหนดคีย์ เข้าถึงค่าได้โดยตรงจากคีย์ ดังนี้
{{ item.product_metafields.care_instructions }}
{{ item.custom_attributes.engraving }}เมตาฟิลด์คำสั่งซื้อและลูกค้าจะเป็นรายการ ให้ทำการวนซ้ำดังนี้
{% for m in order.metafields %}
{{ m.namespace }}.{{ m.key }}: {{ m.value }}
{% endfor %}คีย์จะถูกปรับให้เป็นรูปแบบ snake_case เช่น คีย์ Care Instructions หรือ careInstructions จะถูกเข้าถึงเป็น care_instructions โปรดอ้างอิงค่าที่มีคีย์เป็นอักษรตัวพิมพ์เล็กและมีขีดล่างเสมอ
ความพร้อมของเมตาฟิลด์คำสั่งซื้อและลูกค้าจะขึ้นอยู่กับว่ามีเมตาฟิลด์เหล่านั้นอยู่ในระเบียนหรือไม่
ตัวกรอง Liquid
คุณสามารถใช้ตัวกรองเพื่อจัดรูปแบบข้อมูลในบล็อก Liquid ที่กำหนดเองได้ หากต้องการใช้ตัวกรอง ให้เพิ่มเครื่องหมายไปป์ | แล้วตามด้วยตัวกรองภายในเอาต์พุต Liquid เช่น {{ order.total_price | money }}
นอกจากนี้ยังใช้ตัวกรอง Liquid แบบมาตรฐานได้ด้วย หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับตัวกรอง Liquid โปรดดูการอ้างอิงตัวกรอง
| ตัวกรอง | ตัวอย่าง | คำอธิบาย |
|---|---|---|
money | {{ order.total_price | money }} | จัดรูปแบบยอดเงินในสกุลเงินของใบเสร็จ |
date | {{ order.created_at | date: '%B %e, %Y' }} | จัดรูปแบบวันที่หรือเวลา |
percent | {{ tax_line.rate | percent }} | จัดรูปแบบทศนิยมให้เป็นเปอร์เซ็นต์ เช่น 0.2 เป็น 20% |
t | {{ 'receipt.total' | t }} | ส่งคืนป้ายกำกับที่แปลแล้ว |
barcode | {{ order.barcode_content | barcode }} | แสดงบาร์โค้ด |
qrcode | {{ order.qr_code_content | qrcode }} | แสดงคิวอาร์โค้ด |
ตัวอย่างบล็อก Liquid ที่กำหนดเอง
ตัวอย่างต่อไปนี้เป็นการเพิ่มเนื้อหาที่ไม่มีอยู่ในเทมเพลตใบเสร็จแบบพิมพ์ที่เป็นค่าเริ่มต้น
หากต้องการเพิ่มหมายเหตุคำสั่งซื้อ (หากมี) ให้ใช้ Liquid ต่อไปนี้
{% if order.note %}<p>Note: {{ order.note }}</p>{% endif %}หากต้องการเพิ่ม SKU ไว้ถัดจากแต่ละรายการ ให้ใช้ Liquid ต่อไปนี้
{% for item in order.line_items %}
<p>{{ item.name }} — {{ item.sku }} ×{{ item.quantity }}</p>
{% endfor %}หากต้องการเพิ่มคุณสมบัติสินค้าเฉพาะรายการ เช่น การสลักชื่อ ให้ใช้ Liquid ต่อไปนี้
{% for item in order.line_items %}
{% if item.custom_attributes.engraving %}
<p>{{ item.name }} — Engraving: {{ item.custom_attributes.engraving }}</p>
{% endif %}
{% endfor %}หากต้องการเพิ่มเมตาฟิลด์สินค้า เช่น คำแนะนำในการดูแลรักษา ให้ใช้ Liquid ต่อไปนี้
{% for item in order.line_items %}
{% if item.product_metafields.care_instructions %}
<p>{{ item.name }}: {{ item.product_metafields.care_instructions }}</p>
{% endif %}
{% endfor %}หากต้องการเพิ่มเมตาฟิลด์ลูกค้า ให้ใช้ Liquid ต่อไปนี้
{% for m in order.customer.metafields %}
{% if m.key == 'loyalty_tier' %}<p>Loyalty tier: {{ m.value }}</p>{% endif %}
{% endfor %}หากต้องการเพิ่มคิวอาร์โค้ดที่ลิงก์ไปยังคำสั่งซื้อ ให้ใช้ Liquid ต่อไปนี้
{{ order.qr_code_content | qrcode }}