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

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_name i order.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, increment ani decrement. 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.

Opis zmiennych najwyższego poziomu dostępnych dla niestandardowego bloku Liquid
ZmiennaOpis
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

Opis obiektu 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.

Opis obiektu klienta
WłaściwośćOpis
display_name
Nazwa wyświetlana klienta.
first_name
Imię klienta.
last_name
Nazwisko klienta.
email
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.

Opis obiektu pozycji pojedynczej zamówienia
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.

Opis obiektu transakcji
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.

Opis obiektu 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.

Opis obiektu lokalizacji
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.

Opis obiektu adresu
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.

Opis obiektu rabatu
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.

Opis obiektu pozycji podatku
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.

Opis obiektu karty prezentowej
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.

Opis filtrów dostępnych dla niestandardowego bloku Liquid
FiltrPrzykładOpis
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 }}