Blocchi Liquid personalizzati per le ricevute stampate

Puoi usare un blocco Liquid personalizzato per aggiungere contenuti all'header o al footer di una ricevuta stampata, ad esempio dettagli dell'ordine, informazioni sui clienti, proprietà del prodotto, metafield e codici a barre.

I blocchi Liquid personalizzati vengono visualizzati sulle ricevute stampate per gli ordini online e POS completati. Non vengono visualizzati per gli ordini che utilizzano il check-out offline.

Puoi aggiungere un blocco Liquid personalizzato dall'editor visivo della ricevuta nel pannello di controllo Shopify. I valori a cui fai riferimento vengono estratti dai dati della ricevuta al momento della stampa. Ad esempio, il seguente codice Liquid aggiunge la nota dell'ordine alla ricevuta se è presente:

{% if order.note %}
  <p>Order note: {{ order.note }}</p>
{% endif %}

Regole di sintassi Liquid

Controlla le seguenti regole di sintassi prima di creare un blocco Liquid personalizzato:

  • I nomi delle variabili utilizzano lettere minuscole e trattini bassi, un formato noto come snake_case. Ad esempio, utilizza order.total_price, order.customer.display_name e order.line_items.
  • I valori in denaro sono numeri semplici. Formattali con il filtro money, ad esempio {{ order.total_price | money }}.
  • Proteggi i valori facoltativi con un'istruzione if in modo da non stampare una riga vuota, ad esempio {% if order.customer.email %}{{ order.customer.email }}{% endif %}.
  • Esegui un'iterazione sugli elenchi con un'istruzione for, ad esempio {% for item in order.line_items %} ... {% endfor %}.
  • Alcuni tag Liquid non sono supportati. Non puoi utilizzare assign, capture, include, render, raw, increment o decrement. Se il tuo blocco utilizza un tag non supportato, la ricevuta non verrà salvata e verrà visualizzato un errore.
  • Un blocco Liquid personalizzato può contenere fino a 50 KB di codice.

HTML e CSS

Puoi utilizzare codice HTML di base in un blocco Liquid personalizzato per strutturare i contenuti, come <p>, <br>, <strong>, <em>, intestazioni, elenchi e link. I tuoi contenuti utilizzano i font e le dimensioni già presenti nella ricevuta.

Non puoi utilizzare CSS per modificare l'aspetto di una ricevuta. I blocchi <style> e gli attributi style non sono supportati, in modo che un blocco Liquid personalizzato non possa modificare lo stile o nascondere i contenuti altrove nella ricevuta. Anche i tag <script>, i gestori di eventi come onclick e i link javascript: non sono supportati.

Se il blocco contiene codice HTML non supportato, la ricevuta non verrà salvata e verrà visualizzato un errore. Rimuovi il codice HTML non supportato, quindi salva di nuovo.

Variabili e oggetti

Un blocco Liquid personalizzato può fare riferimento ai seguenti oggetti e variabili. Alcuni valori non sono presenti nella ricevuta predefinita, pertanto un blocco Liquid personalizzato rappresenta un modo per aggiungerli.

Variabili di primo livello

In un blocco Liquid personalizzato sono disponibili le seguenti variabili di primo livello.

Descrizione delle variabili di primo livello disponibili per un blocco Liquid personalizzato
VariabileDescrizione
order
L'ordine in fase di stampa.
shop
Il negozio.
location
Il negozio fisico.
settings
Le impostazioni di visualizzazione della ricevuta, ovvero i selettori configurati nell'editor.
purchased_gift_cards
I buoni regalo acquistati in questo ordine.
staff_member_description
Il membro dello staff attribuito, quando la visualizzazione dello staff è attivata.
locale
Le impostazioni locali della ricevuta, come "en".
is_pickup
Indica se l'ordine è un ordine con ritiro.
pickup_location
La sede di ritiro, ove applicabile.

Oggetto ordine

Descrizione dell'oggetto ordine
ProprietàDescrizione
name
Il nome ordine, ad esempio #1001.
created_at
Il timestamp dell'ordine. Utilizzalo con il filtro date.
note
La nota dell'ordine.
subtotal_price
Il subtotale. Formattalo con il filtro money.
total_price
Il totale. Formattalo con il filtro money.
shipping_price
La spedizione addebitata. Formattala con il filtro money.
total_tip_received
Il totale della mancia. Formattalo con il filtro money.
balance_due
L'importo ancora dovuto. Formattalo con il filtro money.
change_due
Il resto restituito. Formattalo con il filtro money.
taxes_included
Indica se le imposte sono incluse nei prezzi.
receipt_number
Il numero di ricevuta.
barcode_content
Il contenuto da codificare in un codice a barre.
qr_code_content
Il contenuto da codificare in un codice QR. Utilizzalo con il filtro qrcode.
line_items
Gli articoli acquistati. Le proprietà di ciascun articolo sono elencate nell'oggetto voce dell'ordine.
transactions
I pagamenti. Le proprietà di ciascun pagamento sono elencate nell'oggetto transazione.
discounts
Gli sconti a livello di ordine. Le proprietà di ciascuno sconto sono elencate nell'oggetto sconto.
tax_lines
Le righe d'imposta. Le proprietà di ciascuna riga d'imposta sono elencate nell'oggetto riga d'imposta.
refunds
I rimborsi dell'ordine.
shipping_address
L'indirizzo di spedizione. Le proprietà dell'indirizzo sono elencate nell'oggetto indirizzo.
customer
I dettagli del cliente, elencati nell'oggetto cliente.
metafields
I metafield dell'ordine.

Oggetto cliente

L'oggetto order.customer contiene i dettagli del cliente.

Descrizione dell'oggetto cliente
ProprietàDescrizione
display_name
Il nome visualizzato del cliente.
first_name
Il nome del cliente.
last_name
Il cognome del cliente.
email
L'indirizzo email del cliente.
phone
Il numero di telefono del cliente.
default_address
L'indirizzo predefinito del cliente.
metafields
I metafield del cliente.

Oggetto voce dell'ordine

Ogni articolo in order.line_items contiene le seguenti proprietà.

Descrizione dell'oggetto voce dell'ordine
ProprietàDescrizione
name
Il nome del prodotto o della voce.
variant_title
La variante, ad esempio Large/Blu.
sku
Lo SKU.
vendor
Il venditore.
quantity
La quantità.
price
Il prezzo unitario. Formattalo con il filtro money.
total_price
Il totale della voce. Formattalo con il filtro money.
discounted_total_price
Il totale della voce dopo gli sconti. Formattalo con il filtro money.
discounted_unit_price
Il prezzo unitario dopo gli sconti. Formattalo con il filtro money.
discounts
Gli sconti applicati alla voce.
selling_plan_name
Il nome dell'abbonamento o del piano di vendita, se presente.
staff_member_description
Il membro dello staff attribuito alla voce.
custom_attributes
Le proprietà della voce, accessibili tramite chiave.
product_metafields
I metafield del prodotto, accessibili tramite chiave.
variant_metafields
I metafield della variante, accessibili tramite chiave.

Oggetto transazione

Ogni pagamento in order.transactions contiene le seguenti proprietà. Il credito in negozio speso per l'ordine è indicato come un pagamento denominato Credito in negozio. Il saldo del credito in negozio rimanente del cliente non è disponibile come variabile.

Descrizione dell'oggetto transazione
ProprietàDescrizione
name
Il nome del pagamento, ad esempio Visa, contante o credito in negozio.
payment_type
Il codice del tipo di pagamento.
amount
L'importo. Formattalo con il filtro money.
kind
Il tipo di transazione.
status
Lo stato della transazione.
credit_card_number
Il numero di carta mascherato, se applicabile.
created_at
Il timestamp della transazione.
additional_details
Ulteriori righe con i dettagli di pagamento.

Oggetto negozio

L'oggetto shop contiene i dettagli del negozio.

Descrizione dell'oggetto negozio
ProprietàDescrizione
name
Il nome del negozio.
domain
Il dominio del negozio.
currency
La valuta del negozio.
id
L'ID del negozio.

Oggetto sede

L'oggetto location contiene i dettagli della sede di vendita al dettaglio.

Descrizione dell'oggetto sede
ProprietàDescrizione
name
Il nome della sede.
address1
La prima riga dell'indirizzo.
address2
La seconda riga dell'indirizzo.
city
La città.
province
La provincia o lo stato.
province_code
Il codice della provincia o dello stato.
zip
Il CAP o codice postale.
country
Il paese.
phone
Il numero di telefono.
metafields
I metafield della sede.

Oggetto indirizzo

Un indirizzo, ad esempio order.shipping_address o order.customer.default_address, contiene le seguenti proprietà.

Descrizione dell'oggetto indirizzo
ProprietàDescrizione
company
Il nome dell'azienda.
name
Il nome del destinatario.
address1
La prima riga dell'indirizzo.
address2
La seconda riga dell'indirizzo.
city
La città.
province
La provincia o lo stato.
province_code
Il codice della provincia o dello stato.
zip
Il CAP o codice postale.
country
Il paese.
country_code
Il codice del paese.
phone
Il numero di telefono.

Oggetto sconto

Ogni sconto in order.discounts o item.discounts contiene le seguenti proprietà.

Descrizione dell'oggetto sconto
ProprietàDescrizione
description
La descrizione dello sconto.
amount
L'importo dello sconto. Formattalo con il filtro money.
percentage
La percentuale di sconto.

Oggetto riga dell'imposta

Ogni riga dell'imposta in order.tax_lines contiene le seguenti proprietà.

Descrizione dell'oggetto riga dell'imposta
ProprietàDescrizione
title
Il nome dell'imposta.
rate
L'aliquota fiscale in formato decimale.
rate_percentage
L'aliquota fiscale in percentuale.
price
L'importo dell'imposta. Formattalo con il filtro money.
taxable_amount
L'importo soggetto a imposta. Formattalo con il filtro money.

Oggetto buono regalo

Ogni buono regalo in purchased_gift_cards contiene le seguenti proprietà.

Descrizione dell'oggetto buono regalo
ProprietàDescrizione
code
Il codice del buono regalo.
masked_code
Il codice mascherato del buono regalo.
balance
Il saldo del buono regalo. Formatta con il filtro money.
created_at
Il timestamp del buono regalo.
qr_code_content
Il contenuto da codificare in un codice QR.

Metafield e proprietà

I metafield e le proprietà delle voci si presentano in due forme.

I metafield e le proprietà delle voci hanno una chiave. Accedi direttamente a un valore tramite la sua chiave:

{{ item.product_metafields.care_instructions }}
{{ item.custom_attributes.engraving }}

I metafield degli ordini e dei clienti sono elenchi. Itera su di essi:

{% for m in order.metafields %}
  {{ m.namespace }}.{{ m.key }}: {{ m.value }}
{% endfor %}

Le chiavi vengono normalizzate in snake_case. È possibile accedere a una chiave come Care Instructions o careInstructions sotto forma di care_instructions. Fai sempre riferimento ai valori con chiave usando lettere minuscole e trattini bassi.

La disponibilità dei metafield degli ordini e dei clienti dipende dall'esistenza di tali metafield nel record.

Filtri Liquid

Puoi utilizzare i filtri per formattare le informazioni nel tuo blocco Liquid personalizzato. Per applicare un filtro, aggiungi un carattere pipe (|) e poi il filtro all'interno dell'output Liquid, ad esempio {{ order.total_price | money }}.

Funzionano anche i filtri Liquid standard. Per saperne di più sui filtri Liquid, consulta la guida di riferimento dei filtri.

Descrizione dei filtri disponibili per un blocco Liquid personalizzato
FiltroEsempioDescrizione
money
{{ order.total_price | money }}
Formatta un importo nella valuta della ricevuta.
date
{{ order.created_at | date: '%B %e, %Y' }}
Formatta una data o un'ora.
percent
{{ tax_line.rate | percent }}
Formatta un decimale come percentuale, ad esempio 0,2 come 20%.
t
{{ 'receipt.total' | t }}
Restituisce un'etichetta tradotta.
barcode
{{ order.barcode_content | barcode }}
Genera un codice a barre.
qrcode
{{ order.qr_code_content | qrcode }}
Genera un codice QR.

Esempi di blocchi Liquid personalizzati

I seguenti esempi aggiungono contenuti che non sono presenti in un modello di ricevuta stampata predefinito.

Per aggiungere la nota sull'ordine (se presente), usa il seguente codice Liquid:

{% if order.note %}<p>Note: {{ order.note }}</p>{% endif %}

Per aggiungere lo SKU accanto a ogni articolo, usa il seguente codice Liquid:

{% for item in order.line_items %}
  <p>{{ item.name }} — {{ item.sku }} ×{{ item.quantity }}</p>
{% endfor %}

Per aggiungere una proprietà della voce, come un'incisione, usa il seguente codice Liquid:

{% for item in order.line_items %}
  {% if item.custom_attributes.engraving %}
    <p>{{ item.name }} — Engraving: {{ item.custom_attributes.engraving }}</p>
  {% endif %}
{% endfor %}

Per aggiungere un metafield del prodotto, come le istruzioni per la cura, usa il seguente codice Liquid:

{% for item in order.line_items %}
  {% if item.product_metafields.care_instructions %}
    <p>{{ item.name }}: {{ item.product_metafields.care_instructions }}</p>
  {% endif %}
{% endfor %}

Per aggiungere un metafield del cliente, usa il seguente codice Liquid:

{% for m in order.customer.metafields %}
  {% if m.key == 'loyalty_tier' %}<p>Loyalty tier: {{ m.value }}</p>{% endif %}
{% endfor %}

Per aggiungere un codice QR che rimanda all'ordine, usa il seguente codice Liquid:

{{ order.qr_code_content | qrcode }}