Blocos personalizados do Liquid para comprovantes impressos
Use um bloco personalizado do Liquid para adicionar conteúdo próprio ao cabeçalho ou rodapé de um comprovante impresso, como informações do pedido, dados de clientes, propriedades do produto, metacampos e códigos de barras.
Os blocos personalizados do Liquid são renderizados em comprovantes impressos de pedidos concluídos online e no POS. Eles não são renderizados em pedidos que usam checkout offline.
É possível adicionar um bloco personalizado do Liquid no editor visual de comprovantes do admin da Shopify. Os valores de referência são extraídos dos dados do comprovante no momento da impressão. Por exemplo, o código a seguir em Liquid adiciona a observação do pedido ao comprovante, quando houver:
{% if order.note %}
<p>Order note: {{ order.note }}</p>
{% endif %}Nesta página
Regras de sintaxe do Liquid
Revise as seguintes regras de sintaxe antes de criar um bloco personalizado do Liquid:
- Nomes de variáveis usam letras minúsculas e sublinhados, um formato conhecido como "snake_case". Por exemplo, use
order.total_price,order.customer.display_nameeorder.line_items. - Valores em dinheiro são números simples. Formate-os com o filtro
money, como{{ order.total_price | money }}. - Proteja valores opcionais com uma instrução
ifpara não imprimir uma linha em branco, como{% if order.customer.email %}{{ order.customer.email }}{% endif %}. - Itere sobre listas com uma instrução
for, como{% for item in order.line_items %} ... {% endfor %}. - Não há compatibilidade com algumas tags do Liquid. Não é possível usar
assign,capture,include,render,raw,incrementoudecrement. Se o bloco usar uma tag incompatível, o comprovante não será salvo e você verá um erro. - Um bloco personalizado do Liquid pode conter até 50 kB de código.
HTML e CSS
É possível usar HTML básico em um bloco personalizado do Liquid para estruturar o conteúdo, como <p>, <br>, <strong>, <em>, títulos, listas e links. O conteúdo usa as fontes e os tamanhos atuais do comprovante.
Não é possível usar CSS para alterar a aparência do comprovante. Blocos <style> e atributos style são incompatíveis. Assim, um bloco personalizado do Liquid não pode reestilizar ou ocultar o conteúdo em outros lugares do comprovante. Tags <script>, manipuladores de eventos como onclick e links javascript: também não são compatíveis.
Se o bloco contiver HTML incompatível, o comprovante não será salvo e você verá um erro. Remova o HTML incompatível e salve de novo.
Variáveis e objetos
Um bloco personalizado do Liquid pode referenciar os seguintes objetos e variáveis. Alguns valores não constam no comprovante padrão, portanto, uma das formas de adicioná-los é usando um bloco personalizado do Liquid.
Variáveis de nível superior
As seguintes variáveis de nível superior estão disponíveis em um bloco personalizado do Liquid.
| Variável | Descrição |
|---|---|
order | O pedido que está sendo impresso. |
shop | A loja. |
location | A loja física. |
settings | As configurações de exibição do comprovante, ou seja, os botões de alternância configurados no editor. |
purchased_gift_cards | Os cartões-presente comprados no pedido. |
staff_member_description | O membro da equipe atribuído, caso a exibição da equipe esteja ativada. |
locale | A localidade do comprovante, como pt. |
is_pickup | Se for um pedido de retirada. |
pickup_location | O local de retirada, quando aplicável. |
Objeto de pedido
| Propriedade | Descrição |
|---|---|
name | O nome do pedido, como #1001. |
created_at |
A marcação de data e hora do pedido. Use com o filtro date.
|
note | A observação do pedido. |
subtotal_price |
O subtotal. Formate com o filtro money.
|
total_price |
O total. Formate com o filtro money.
|
shipping_price |
O frete cobrado. Formate com o filtro money.
|
total_tip_received |
O total de gorjetas. Formate com o filtro money.
|
balance_due |
O valor restante. Formate com o filtro money.
|
change_due |
O troco repassado. Formate com o filtro money.
|
taxes_included | Se os tributos estão incluídos nos preços. |
receipt_number | O número do comprovante. |
barcode_content | O conteúdo a codificar em um código de barras. |
qr_code_content |
O conteúdo a codificar em um código QR. Use com o filtro qrcode.
|
line_items | Os itens comprados. As propriedades de cada um estão no objeto de item de linha do pedido. |
transactions | Os pagamentos. As propriedades de cada um estão no objeto de transação. |
discounts | Os descontos no nível do pedido. As propriedades de cada um estão no objeto de desconto. |
tax_lines | As linhas de tributos. As propriedades de cada uma estão no objeto de linha de tributos. |
refunds | Os reembolsos no pedido. |
shipping_address | O endereço de entrega. As propriedades do endereço estão listadas no objeto de endereço. |
customer | As informações do cliente, listadas no objeto do cliente. |
metafields | Os metacampos do pedido. |
Objeto do cliente
O objeto order.customer contém as informações do cliente.
| Propriedade | Descrição |
|---|---|
display_name | O nome de exibição do cliente. |
first_name | O nome do cliente. |
last_name | O sobrenome do cliente. |
| O endereço de e-mail do cliente. | |
phone | O número de telefone do cliente. |
default_address | O endereço padrão do cliente. |
metafields | Os metacampos do cliente. |
Objeto de item de linha do pedido
Cada item em order.line_items contém as seguintes propriedades.
| Propriedade | Descrição |
|---|---|
name | O nome do produto ou da linha. |
variant_title | A variante, como Grande/Azul. |
sku | O SKU. |
vendor | O fabricante. |
quantity | A quantidade. |
price |
O preço unitário. Formate com o filtro money.
|
total_price |
O total da linha. Formate com o filtro money.
|
discounted_total_price |
O total da linha após os descontos. Formate com o filtro money.
|
discounted_unit_price |
O preço unitário após os descontos. Formate com o filtro money.
|
discounts | Os descontos aplicados à linha. |
selling_plan_name | O nome da assinatura ou do plano de venda, se houver. |
staff_member_description | O membro da equipe atribuído à linha. |
custom_attributes | As propriedades do item de linha, acessadas por chave. |
product_metafields | Os metacampos do produto, acessados por chave. |
variant_metafields | Os metacampos da variante, acessados por chave. |
Objeto de transação
Cada pagamento em order.transactions contém as seguintes propriedades. O crédito na loja gasto no pedido é listado como um pagamento denominado "Crédito na loja". O saldo de crédito na loja restante do cliente não fica disponível como uma variável.
| Propriedade | Descrição |
|---|---|
name | O nome do pagamento, como Visa, dinheiro ou crédito na loja. |
payment_type | O código do tipo de pagamento. |
amount |
O valor. Formate com o filtro money.
|
kind | O tipo de transação. |
status | O status da transação. |
credit_card_number | O número do cartão mascarado, quando aplicável. |
created_at | A marcação de data e hora da transação. |
additional_details | Linhas adicionais de informações de pagamento. |
Objeto da loja
O objeto shop é o objeto que contém as informações da loja.
| Propriedade | Descrição |
|---|---|
name | O nome da loja. |
domain | O domínio da loja. |
currency | A moeda da loja. |
id | O ID da loja. |
Objeto de local
O objeto location é o objeto que contém as informações do local de varejo.
| Propriedade | Descrição |
|---|---|
name | O nome do local. |
address1 | A primeira linha do endereço. |
address2 | A segunda linha do endereço. |
city | A cidade. |
province | A província ou o estado. |
province_code | O código da província ou do estado. |
zip | O CEP. |
country | O país. |
phone | O número de telefone. |
metafields | Os metacampos do local. |
Objeto de endereço
Um endereço, como order.shipping_address ou order.customer.default_address, contém as seguintes propriedades.
| Propriedade | Descrição |
|---|---|
company | O nome da empresa. |
name | O nome do destinatário. |
address1 | A primeira linha do endereço. |
address2 | A segunda linha do endereço. |
city | A cidade. |
province | A província ou o estado. |
province_code | O código da província ou do estado. |
zip | O CEP. |
country | O país. |
country_code | O código do país. |
phone | O número de telefone. |
Objeto de desconto
Cada desconto em order.discounts ou item.discounts contém as seguintes propriedades.
| Propriedade | Descrição |
|---|---|
description | A descrição do desconto. |
amount | O valor do desconto. Formate com o filtro money. |
percentage | A porcentagem de desconto. |
Objeto de linha de tributo
Cada linha de tributo em order.tax_lines contém as seguintes propriedades.
| Propriedade | Descrição |
|---|---|
title | O título do tributo. |
rate | A alíquota como um decimal. |
rate_percentage | A alíquota como uma porcentagem. |
price | O valor do tributo. Formate com o filtro money. |
taxable_amount | O valor sujeito a tributo. Formate com o filtro money. |
Objeto de cartão-presente
Cada cartão-presente em purchased_gift_cards contém as seguintes propriedades.
| Propriedade | Descrição |
|---|---|
code | O código do cartão-presente. |
masked_code | O código mascarado do cartão-presente. |
balance | O saldo do cartão-presente. Formate com o filtro money. |
created_at | A marcação de data e hora do cartão-presente. |
qr_code_content | O conteúdo para codificar em um código QR. |
Metacampos e propriedades
Os metacampos e as propriedades de itens de linha podem ter dois formatos.
Os metacampos e as propriedades de itens de linha são indexados por chave. Acesse um valor diretamente pela chave correspondente:
{{ item.product_metafields.care_instructions }}
{{ item.custom_attributes.engraving }}Os metacampos de pedido e cliente são listas. Faça a iteração por eles:
{% for m in order.metafields %}
{{ m.namespace }}.{{ m.key }}: {{ m.value }}
{% endfor %}As chaves são normalizadas para snake_case. O acesso a uma chave como Care Instructions ou careInstructions é feito por care_instructions. Sempre referencie valores com chave em letras minúsculas com sublinhados.
A disponibilidade dos metacampos de pedido e cliente depende da existência deles no registro.
Filtros do Liquid
É possível usar filtros para formatar as informações no bloco personalizado do Liquid. Para aplicar um filtro, adicione um caractere de barra vertical, |, e depois o filtro dentro da saída do Liquid, como em {{ order.total_price | money }}.
Os filtros padrão do Liquid também funcionam. Para saber mais, consulte a Referência de filtros do Liquid.
| Filtro | Exemplo | Descrição |
|---|---|---|
money | {{ order.total_price | money }} | Formata um valor na moeda do comprovante. |
date | {{ order.created_at | date: '%B %e, %Y' }} | Formata uma data ou hora. |
percent | {{ tax_line.rate | percent }} | Formata um decimal como porcentagem, como 0,2 para 20%. |
t | {{ 'receipt.total' | t }} | Retorna uma etiqueta traduzida. |
barcode | {{ order.barcode_content | barcode }} | Renderiza um código de barras. |
qrcode | {{ order.qr_code_content | qrcode }} | Renderiza um código QR. |
Exemplos de blocos personalizados do Liquid
Os exemplos a seguir adicionam conteúdo que não está no modelo padrão de comprovante impresso.
Para adicionar a observação do pedido, quando houver, use o seguinte Liquid:
{% if order.note %}<p>Note: {{ order.note }}</p>{% endif %}Para adicionar o SKU ao lado de cada item, use o seguinte Liquid:
{% for item in order.line_items %}
<p>{{ item.name }} — {{ item.sku }} ×{{ item.quantity }}</p>
{% endfor %}Para adicionar uma propriedade de item de linha, como uma gravação, use o seguinte Liquid:
{% for item in order.line_items %}
{% if item.custom_attributes.engraving %}
<p>{{ item.name }} — Engraving: {{ item.custom_attributes.engraving }}</p>
{% endif %}
{% endfor %}Para adicionar um metacampo de produto, como instruções de lavagem, use o seguinte Liquid:
{% for item in order.line_items %}
{% if item.product_metafields.care_instructions %}
<p>{{ item.name }}: {{ item.product_metafields.care_instructions }}</p>
{% endif %}
{% endfor %}Para adicionar um metacampo de cliente, use o seguinte Liquid:
{% for m in order.customer.metafields %}
{% if m.key == 'loyalty_tier' %}<p>Loyalty tier: {{ m.value }}</p>{% endif %}
{% endfor %}Para adicionar um código QR com um link para o pedido, use o seguinte Liquid:
{{ order.qr_code_content | qrcode }}