Niestandardowe bloki Liquid dla drukowanych paragonów
Możesz użyć niestandardowego bloku Liquid, aby dodać własną treść do nagłówka lub stopki drukowanego paragonu, taką jak szczegóły zamówienia, informacje o kliencie, właściwości produktu, metapola i kody kreskowe.
Niestandardowe bloki Liquid są renderowane na drukowanych paragonach dla zrealizowanych zamówień online oraz zamówień z Punktu sprzedaży. Nie są renderowane dla zamówień, w przypadku których realizacja zakupu odbywa się offline.
Możesz dodać niestandardowy blok Liquid w edytorze wizualnym paragonu w panelu administracyjnym Shopify. Wartości, do których się odwołujesz, są pobierane z danych paragonu podczas jego drukowania. Przykładowo poniższy kod Liquid dodaje do paragonu uwagę do zamówienia, jeśli taka istnieje:
{% if order.note %}
<p>Order note: {{ order.note }}</p>
{% endif %}Na tej stronie
Zasady składni Liquid
Przed utworzeniem niestandardowego bloku Liquid zapoznaj się z poniższymi zasadami składni:
- Nazwy zmiennych zapisuje się małymi literami i ze znakami podkreślenia, co stanowi format znany jako snake_case. Użyj na przykład
order.total_price,order.customer.display_nameiorder.line_items. - Wartości pieniężne to zwykłe liczby. Sformatuj je za pomocą filtru
money, tak jak w przypadku{{ order.total_price | money }}. - Zabezpiecz opcjonalne wartości za pomocą instrukcji
if, aby uniknąć drukowania pustego wiersza, np.{% if order.customer.email %}{{ order.customer.email }}{% endif %}. - Wykonuj iteracje na listach za pomocą instrukcji
for, np.{% for item in order.line_items %} ... {% endfor %}. - Niektóre tagi Liquid nie są obsługiwane. Nie można używać tagów
assign,capture,include,render,raw,incrementanidecrement. Jeśli użyjesz w bloku nieobsługiwanego tagu, zapisanie paragonu nie będzie możliwe i pojawi się błąd. - Niestandardowy blok Liquid może zawierać do 50 KB kodu.
HTML i CSS
Aby ustrukturyzować treść w niestandardowym bloku Liquid, możesz użyć podstawowych tagów HTML, np. <p>, <br>, <strong>, <em>, nagłówków, list i linków. Twoja treść będzie wykorzystywać istniejące czcionki i rozmiary zdefiniowane dla paragonu.
Do zmiany wyglądu paragonu nie można użyć języka CSS. Bloki <style> oraz atrybuty style nie są obsługiwane po to, by niestandardowy blok Liquid nie mógł modyfikować wyglądu ani ukrywać innych treści na paragonie. Tagi <script>, procedury obsługi zdarzeń, takie jak onclick, oraz linki javascript: również nie są obsługiwane.
Jeśli blok zawiera nieobsługiwany kod HTML, paragon nie zostanie zapisany i wyświetli się błąd. Usuń nieobsługiwany kod HTML, a następnie spróbuj ponownie zapisać zmianę.
Zmienne i obiekty
Niestandardowy blok Liquid może odwoływać się do następujących obiektów i zmiennych. Niektóre wartości nie występują na domyślnym paragonie, więc użycie niestandardowego bloku Liquid jest jednym ze sposobów na ich dodanie.
Zmienne najwyższego poziomu
Następujące zmienne najwyższego poziomu są dostępne w niestandardowym bloku Liquid.
| Zmienna | Opis |
|---|---|
order | Drukowane zamówienie. |
shop | Sklep. |
location | Punkt sprzedaży detalicznej. |
settings | Ustawienia wyświetlania paragonu, tj. przełączniki skonfigurowane w edytorze. |
purchased_gift_cards | Karty prezentowe kupione w ramach tego zamówienia. |
staff_member_description | Przypisany pracownik (jeśli włączono opcję wyświetlania pracowników). |
locale | Ustawienia regionalne paragonu, np. „en”. |
is_pickup | Informacja o tym, czy jest to zamówienie z odbiorem. |
pickup_location | Lokalizacja odbioru, w stosownych przypadkach. |
Obiekt zamówienia
| Właściwość | Opis |
|---|---|
name | Nazwa zamówienia, np. #1001. |
created_at |
Znacznik czasu zamówienia. Do użycia z filtrem date.
|
note | Uwaga do zamówienia. |
subtotal_price |
Suma częściowa. Sformatuj za pomocą filtru money.
|
total_price |
Suma. Sformatuj za pomocą filtru money.
|
shipping_price |
Naliczona opłata za wysyłkę. Sformatuj za pomocą filtru money.
|
total_tip_received |
Całkowita kwota napiwku. Sformatuj za pomocą filtru money.
|
balance_due |
Pozostała kwota do zapłaty. Sformatuj za pomocą filtru money.
|
change_due |
Wydana reszta. Sformatuj za pomocą filtru money.
|
taxes_included | Informacja o tym, czy podatek jest wliczony w ceny. |
receipt_number | Numer paragonu. |
barcode_content | Treść do zakodowania w kodzie kreskowym. |
qr_code_content |
Treść do zakodowania w kodzie QR. Do użycia z filtrem qrcode.
|
line_items | Kupione pozycje. Właściwości każdej z pozycji zostały wymienione w obiekcie pozycji pojedynczej zamówienia. |
transactions | Płatności. Właściwości każdej płatności zostały wymienione w obiekcie transakcji. |
discounts | Rabaty na poziomie zamówienia. Właściwości każdego rabatu zostały wymienione w obiekcie rabatu. |
tax_lines | Pozycje podatku. Właściwości każdej pozycji podatku zostały wymienione w obiekcie pozycji podatku. |
refunds | Zwroty kosztów dla zamówienia. |
shipping_address | Adres wysyłki. Właściwości adresu są wymienione w obiekcie adresu. |
customer | Dane klienta, wyszczególnione w obiekcie klienta. |
metafields | Metapola zamówienia. |
Obiekt klienta
Obiekt order.customer zawiera dane klienta.
| Właściwość | Opis |
|---|---|
display_name | Nazwa wyświetlana klienta. |
first_name | Imię klienta. |
last_name | Nazwisko klienta. |
| Adres e-mail klienta. | |
phone | Numer telefonu klienta. |
default_address | Adres domyślny klienta. |
metafields | Metapola klienta. |
Obiekt pozycji pojedynczej zamówienia
Każda pozycja w order.line_items zawiera następujące właściwości.
| Właściwość | Opis |
|---|---|
name | Nazwa produktu lub pozycji. |
variant_title | Wariant, np. Duży / Niebieski. |
sku | Kod SKU. |
vendor | Dostawca. |
quantity | Ilość. |
price |
Cena jednostkowa. Sformatuj za pomocą filtru money.
|
total_price |
Suma pozycji. Sformatuj za pomocą filtru money.
|
discounted_total_price |
Suma pozycji po rabatach. Sformatuj za pomocą filtru money.
|
discounted_unit_price |
Cena jednostkowa po rabatach. Sformatuj za pomocą filtru money.
|
discounts | Rabaty zastosowane do pozycji. |
selling_plan_name | Nazwa subskrypcji lub planu sprzedaży, jeśli dotyczy. |
staff_member_description | Pracownik przypisany do pozycji. |
custom_attributes | Właściwości pozycji pojedynczej, dostęp według klucza. |
product_metafields | Metapola produktu, dostęp według klucza. |
variant_metafields | Metapola wariantu, dostęp według klucza. |
Obiekt transakcji
Każda płatność w order.transactions zawiera następujące właściwości. Kredyty sklepowe wydane na zamówienie są wymienione jako płatność o nazwie Store credit. Pozostałe saldo kredytów sklepowych klienta nie jest dostępne jako zmienna.
| Właściwość | Opis |
|---|---|
name | Nazwa płatności, taka jak Visa, gotówka lub kredyty sklepowe. |
payment_type | Kod typu płatności. |
amount |
Kwota. Sformatuj za pomocą filtru money.
|
kind | Rodzaj transakcji. |
status | Status transakcji. |
credit_card_number | Zamaskowany numer karty, jeśli dotyczy. |
created_at | Znacznik czasu transakcji. |
additional_details | Dodatkowe wiersze szczegółów płatności. |
Obiekt sklepu
Obiekt shop zawiera dane sklepu.
| Właściwość | Opis |
|---|---|
name | Nazwa sklepu. |
domain | Domena sklepu. |
currency | Waluta sklepu. |
id | ID sklepu. |
Obiekt lokalizacji
Obiekt location zawiera dane lokalizacji detalicznej.
| Właściwość | Opis |
|---|---|
name | Nazwa lokalizacji. |
address1 | Pierwsza linia adresu. |
address2 | Druga linia adresu. |
city | Miasto. |
province | Prowincja lub stan. |
province_code | Kod prowincji lub stanu. |
zip | Kod pocztowy. |
country | Kraj. |
phone | Numer telefonu. |
metafields | Metapola lokalizacji. |
Obiekt adresu
Adres, taki jak order.shipping_address lub order.customer.default_address, zawiera następujące właściwości.
| Właściwość | Opis |
|---|---|
company | Nazwa firmy. |
name | Imię i nazwisko odbiorcy. |
address1 | Pierwsza linia adresu. |
address2 | Druga linia adresu. |
city | Miasto. |
province | Prowincja lub stan. |
province_code | Kod prowincji lub stanu. |
zip | Kod pocztowy. |
country | Kraj. |
country_code | Kod kraju. |
phone | Numer telefonu. |
Obiekt rabatu
Każdy rabat w order.discounts lub item.discounts zawiera następujące właściwości.
| Właściwość | Opis |
|---|---|
description | Opis rabatu. |
amount | Kwota rabatu. Sformatuj za pomocą filtru money. |
percentage | Procent rabatu. |
Obiekt pozycji podatku
Każda pozycja podatku w order.tax_lines zawiera następujące właściwości.
| Właściwość | Opis |
|---|---|
title | Tytuł podatku. |
rate | Stawka podatku w postaci dziesiętnej. |
rate_percentage | Stawka podatku w procentach. |
price | Kwota podatku. Sformatuj za pomocą filtru money. |
taxable_amount | Kwota podlegająca opodatkowaniu. Sformatuj za pomocą filtru money. |
Obiekt karty prezentowej
Każda karta prezentowa w purchased_gift_cards zawiera następujące właściwości.
| Właściwość | Opis |
|---|---|
code | Kod karty prezentowej. |
masked_code | Zamaskowany kod karty prezentowej. |
balance | Saldo karty prezentowej. Sformatuj za pomocą filtru money. |
created_at | Znacznik czasu karty prezentowej. |
qr_code_content | Treść do zakodowania w kodzie QR. |
Metapola i właściwości
Metapola i właściwości pozycji pojedynczej mają dwie formy.
Metapola i właściwości pozycji pojedynczej są powiązane z kluczami. Uzyskaj dostęp do wartości bezpośrednio przez jej klucz:
{{ item.product_metafields.care_instructions }}
{{ item.custom_attributes.engraving }}Metapola zamówień i klientów to listy. Przejdź przez nie w pętli:
{% for m in order.metafields %}
{{ m.namespace }}.{{ m.key }}: {{ m.value }}
{% endfor %}Klucze są znormalizowane do formatu snake_case. Dostęp do klucza, takiego jak Care Instructions lub careInstructions, uzyskuje się jako care_instructions. Zawsze odwołuj się do wartości kluczy za pomocą małych liter i podkreśleń.
Dostępność metapól zamówień i klientów zależy od tego, czy te metapola istnieją w rekordzie.
Filtry Liquid
Możesz użyć filtrów do formatowania informacji w niestandardowym bloku Liquid. Aby zastosować filtr, dodaj znak pionowej kreski |, a następnie wstaw filtr wewnątrz danych wyjściowych Liquid, np. {{ order.total_price | money }}.
Działają również standardowe filtry Liquid. Aby dowiedzieć się więcej o filtrach Liquid, zapoznaj się z dokumentacją filtrów.
| Filtr | Przykład | Opis |
|---|---|---|
money | {{ order.total_price | money }} | Formatuje kwotę w walucie paragonu. |
date | {{ order.created_at | date: '%B %e, %Y' }} | Formatuje datę lub godzinę. |
percent | {{ tax_line.rate | percent }} | Formatuje ułamek dziesiętny jako wartość procentową, np. 0,2 jako 20%. |
t | {{ 'receipt.total' | t }} | Zwraca przetłumaczoną etykietę. |
barcode | {{ order.barcode_content | barcode }} | Renderuje kod kreskowy. |
qrcode | {{ order.qr_code_content | qrcode }} | Renderuje kod QR. |
Przykłady niestandardowych bloków Liquid
Poniższe przykłady umożliwiają dodanie treści, której nie ma w domyślnym szablonie drukowanego paragonu.
Aby dodać uwagę do zamówienia (jeśli istnieje), użyj poniższego kodu Liquid:
{% if order.note %}<p>Note: {{ order.note }}</p>{% endif %}Aby dodać kod SKU obok każdej pozycji, użyj poniższego kodu Liquid:
{% for item in order.line_items %}
<p>{{ item.name }} — {{ item.sku }} ×{{ item.quantity }}</p>
{% endfor %}Aby dodać właściwość pozycji pojedynczej, na przykład informację o grawerowaniu, użyj poniższego kodu Liquid:
{% for item in order.line_items %}
{% if item.custom_attributes.engraving %}
<p>{{ item.name }} — Engraving: {{ item.custom_attributes.engraving }}</p>
{% endif %}
{% endfor %}Aby dodać metapole produktu, na przykład instrukcję pielęgnacji, użyj poniższego kodu Liquid:
{% for item in order.line_items %}
{% if item.product_metafields.care_instructions %}
<p>{{ item.name }}: {{ item.product_metafields.care_instructions }}</p>
{% endif %}
{% endfor %}Aby dodać metapole klienta, użyj poniższego kodu Liquid:
{% for m in order.customer.metafields %}
{% if m.key == 'loyalty_tier' %}<p>Loyalty tier: {{ m.value }}</p>{% endif %}
{% endfor %}Aby dodać kod QR, który kieruje do zamówienia, użyj poniższego kodu Liquid:
{{ order.qr_code_content | qrcode }}