Bloques de Liquid personalizados para recibos impresos
Puedes usar un bloque de Liquid personalizado para agregar tu propio contenido al encabezado o pie de página de un recibo impreso, como la información del pedido, del cliente, las propiedades del producto, los metacampos y los códigos de barras.
Los bloques de Liquid personalizados se muestran en los recibos impresos de pedidos online y de Point of Sale completados. No se muestran para los pedidos que usan el pago offline.
Puedes agregar un bloque de Liquid personalizado desde el editor visual de recibos en el panel de control de Shopify. Los valores a los que haces referencia se extraen de los datos del recibo cuando este se imprime. Por ejemplo, el siguiente código de Liquid agrega la nota del pedido al recibo cuando hay una nota:
{% if order.note %}
<p>Order note: {{ order.note }}</p>
{% endif %}En esta página
Reglas de sintaxis de Liquid
Revisa las siguientes reglas de sintaxis antes de crear un bloque de Liquid personalizado:
- Los nombres de las variables usan letras minúsculas y guiones bajos, un formato conocido como snake_case. Por ejemplo, usa
order.total_price,order.customer.display_nameyorder.line_items. - Los valores monetarios son números simples. Dales formato con el filtro
money, como{{ order.total_price | money }}. - Protege los valores opcionales con una declaración
ifpara no imprimir una línea vacía, como{% if order.customer.email %}{{ order.customer.email }}{% endif %}. - Itera sobre las listas con una declaración
for, como{% for item in order.line_items %} ... {% endfor %}. - Algunas etiquetas de Liquid no son compatibles. No puedes usar
assign,capture,include,render,raw,incrementnidecrement. Si el bloque usa una etiqueta no compatible, el recibo no se guardará y verás un error. - Un bloque de Liquid personalizado puede contener hasta 50 KB de código.
HTML y CSS
Puedes usar HTML básico en un bloque de Liquid personalizado para estructurar el contenido, como <p>, <br>, <strong>, <em>, encabezados, listas y enlaces. El contenido usa las fuentes y los tamaños existentes del recibo.
No puedes usar CSS para cambiar el aspecto de un recibo. Los bloques <style> y los atributos style no son compatibles para que un bloque de Liquid personalizado no pueda rediseñar ni ocultar contenido en otras partes del recibo. Las etiquetas <script>, los controladores de eventos como onclick y los enlaces de javascript: tampoco son compatibles.
Si el bloque contiene HTML no compatible, el recibo no se guardará y verás un error. Elimina el HTML no compatible y vuelve a guardar.
Variables y objetos
Un bloque de Liquid personalizado puede hacer referencia a los siguientes objetos y variables. Algunos valores no se encuentran en el recibo predeterminado, por lo que un bloque de Liquid personalizado es una forma de agregarlos.
Variables de nivel superior
Las siguientes variables de nivel superior están disponibles en un bloque de Liquid personalizado.
| Variable | Descripción |
|---|---|
order | El pedido que se está imprimiendo. |
shop | La tienda. |
location | El establecimiento minorista. |
settings | La configuración de visualización del recibo, que corresponde a las opciones de activación configuradas en el editor. |
purchased_gift_cards | Las tarjetas de regalo compradas en este pedido. |
staff_member_description | El empleado asignado, cuando se activa la visualización de los empleados. |
locale | La región del recibo, como en. |
is_pickup | Si el pedido es de retiro. |
pickup_location | El lugar de retiro, cuando corresponda. |
Objeto de pedido
| Propiedad | Descripción |
|---|---|
name | El nombre del pedido, como #1001. |
created_at |
La marca de fecha y hora del pedido. Úsala con el filtro date.
|
note | La nota del pedido. |
subtotal_price |
El subtotal. Dale formato con el filtro money.
|
total_price |
El total. Dale formato con el filtro money.
|
shipping_price |
El cargo de envío. Dale formato con el filtro money.
|
total_tip_received |
El total de propina. Dale formato con el filtro money.
|
balance_due |
El monto que aún se debe. Dale formato con el filtro money.
|
change_due |
El cambio entregado. Dale formato con el filtro money.
|
taxes_included | Si los precios incluyen el impuesto. |
receipt_number | El número del recibo. |
barcode_content | El contenido para codificar en un código de barras. |
qr_code_content |
El contenido para codificar en un código QR. Úsalo con el filtro qrcode.
|
line_items | Los artículos comprados. Las propiedades de cada artículo aparecen en el objeto de la línea de artículo del pedido. |
transactions | Los pagos. Las propiedades de cada pago aparecen en el objeto de la transacción. |
discounts | Los descuentos a nivel del pedido. Las propiedades de cada descuento aparecen en el objeto de descuento. |
tax_lines | Las líneas de impuestos. Las propiedades de cada línea de impuestos aparecen en el objeto de la línea de impuestos. |
refunds | Los reembolsos del pedido. |
shipping_address | La dirección de envío. Las propiedades de la dirección se enumeran en el objeto de dirección. |
customer | La información del cliente, que figura en el objeto de cliente. |
metafields | Los metacampos del pedido. |
Objeto de cliente
El objeto order.customer contiene la información del cliente.
| Propiedad | Descripción |
|---|---|
display_name | El nombre visible del cliente. |
first_name | El nombre del cliente. |
last_name | El apellido del cliente. |
| La dirección de correo electrónico del cliente. | |
phone | El número de teléfono del cliente. |
default_address | La dirección predeterminada del cliente. |
metafields | Los metacampos del cliente. |
Objeto de línea de artículo del pedido
Cada artículo en order.line_items contiene las siguientes propiedades.
| Propiedad | Descripción |
|---|---|
name | El nombre del producto o de la línea. |
variant_title | La variante, como Grande / Azul. |
sku | El SKU. |
vendor | El proveedor. |
quantity | La cantidad. |
price |
El precio unitario. Aplica el formato con el filtro money.
|
total_price |
El total de la línea. Aplica el formato con el filtro money.
|
discounted_total_price |
El total de la línea después de los descuentos. Aplica el formato con el filtro money.
|
discounted_unit_price |
El precio unitario después de los descuentos. Aplica el formato con el filtro money.
|
discounts | Los descuentos aplicados a la línea. |
selling_plan_name | El nombre de la suscripción o del plan de venta, si corresponde. |
staff_member_description | El empleado asignado a la línea. |
custom_attributes | Las propiedades de la línea de artículo, a las que se accede mediante clave. |
product_metafields | Los metacampos del producto, a los que se accede mediante clave. |
variant_metafields | Los metacampos de la variante, a los que se accede mediante clave. |
Objeto de transacción
Cada pago en order.transactions contiene las siguientes propiedades. El crédito en tienda que se gastó en el pedido se incluye como un pago con el nombre de Crédito en tienda. El saldo del crédito en tienda restante del cliente no está disponible como variable.
| Propiedad | Descripción |
|---|---|
name | El nombre del pago, como Visa, efectivo o crédito en tienda. |
payment_type | El código del tipo de pago. |
amount |
El monto. Aplica el formato con el filtro money.
|
kind | El tipo de transacción. |
status | El estado de la transacción. |
credit_card_number | El número de tarjeta oculto, si corresponde. |
created_at | La marca de fecha y hora de la transacción. |
additional_details | Líneas de información de pago adicionales. |
Objeto de tienda
El objeto shop contiene la información de la tienda.
| Propiedad | Descripción |
|---|---|
name | El nombre de la tienda. |
domain | El dominio de la tienda. |
currency | La moneda de la tienda. |
id | La identificación de la tienda. |
Objeto de sucursal
El objeto location contiene la información de la sucursal minorista.
| Propiedad | Descripción |
|---|---|
name | El nombre de la sucursal. |
address1 | La primera línea de la dirección. |
address2 | La segunda línea de la dirección. |
city | La ciudad. |
province | La provincia o el estado. |
province_code | El código de la provincia o del estado. |
zip | El código postal. |
country | El país. |
phone | El número de teléfono. |
metafields | Los metacampos de la sucursal. |
Objeto de dirección
Una dirección, como order.shipping_address o order.customer.default_address, contiene las siguientes propiedades.
| Propiedad | Descripción |
|---|---|
company | El nombre de la empresa. |
name | El nombre del destinatario. |
address1 | La primera línea de la dirección. |
address2 | La segunda línea de la dirección. |
city | La ciudad. |
province | La provincia o el estado. |
province_code | El código de la provincia o del estado. |
zip | El código postal. |
country | El país. |
country_code | El código del país. |
phone | El número de teléfono. |
Objeto de descuento
Cada descuento en order.discounts o item.discounts contiene las siguientes propiedades.
| Propiedad | Descripción |
|---|---|
description | La descripción del descuento. |
amount | El monto del descuento. Aplica el formato con el filtro money. |
percentage | El porcentaje de descuento. |
Objeto de línea de impuestos
Cada línea de impuestos en order.tax_lines contiene las siguientes propiedades.
| Propiedad | Descripción |
|---|---|
title | El título del impuesto. |
rate | La tasa de impuestos en formato decimal. |
rate_percentage | La tasa de impuestos como porcentaje. |
price | El monto del impuesto. Aplica el formato con el filtro money. |
taxable_amount | El monto sujeto a impuestos. Aplica el formato con el filtro money. |
Objeto de tarjeta de regalo
Cada tarjeta de regalo en purchased_gift_cards contiene las siguientes propiedades.
| Propiedad | Descripción |
|---|---|
code | El código de la tarjeta de regalo. |
masked_code | El código oculto de la tarjeta de regalo. |
balance | El saldo de la tarjeta de regalo. Aplica formato con el filtro money. |
created_at | La marca de fecha y hora de la tarjeta de regalo. |
qr_code_content | El contenido para codificar en un código QR. |
Metacampos y propiedades
Los metacampos y las propiedades de línea de artículo tienen dos formatos.
Los metacampos y las propiedades de línea de artículo se basan en claves. Accede a un valor directamente mediante su clave:
{{ item.product_metafields.care_instructions }}
{{ item.custom_attributes.engraving }}Los metacampos de pedidos y clientes son listas. Itera sobre ellos:
{% for m in order.metafields %}
{{ m.namespace }}.{{ m.key }}: {{ m.value }}
{% endfor %}Las claves se normalizan a snake_case. A una clave como Care Instructions o careInstructions se accede como care_instructions. Siempre haz referencia a los valores de clave en minúscula y con guiones bajos.
La disponibilidad de metacampos de pedido y cliente depende de que esos metacampos existan en el registro.
Filtros de Liquid
Puedes usar filtros para dar formato a la información en tu bloque personalizado de Liquid. Para aplicar un filtro, agrega un carácter de barra vertical, |, y luego el filtro dentro del resultado de Liquid; por ejemplo, {{ order.total_price | money }}.
Los filtros estándar de Liquid también funcionan. Para obtener más información sobre los filtros de Liquid, consulta la referencia de filtros.
| Filtro | Ejemplo | Descripción |
|---|---|---|
money | {{ order.total_price | money }} | Da formato a un monto en la moneda del recibo. |
date | {{ order.created_at | date: '%B %e, %Y' }} | Da formato a una fecha u hora. |
percent | {{ tax_line.rate | percent }} | Da formato a un decimal como porcentaje; por ejemplo, 0,2 como 20%. |
t | {{ 'receipt.total' | t }} | Devuelve una etiqueta traducida. |
barcode | {{ order.barcode_content | barcode }} | Muestra un código de barras. |
qrcode | {{ order.qr_code_content | qrcode }} | Muestra un código QR. |
Ejemplos de bloques personalizados de Liquid
Los siguientes ejemplos agregan contenido que no está en una plantilla de recibo impreso predeterminada.
Para agregar la nota de pedido (cuando haya una), usa el siguiente código de Liquid:
{% if order.note %}<p>Note: {{ order.note }}</p>{% endif %}Para agregar el SKU junto a cada artículo, usa el siguiente código de Liquid:
{% for item in order.line_items %}
<p>{{ item.name }} — {{ item.sku }} ×{{ item.quantity }}</p>
{% endfor %}Para agregar una propiedad de línea de artículo, como un grabado, usa el siguiente código de Liquid:
{% for item in order.line_items %}
{% if item.custom_attributes.engraving %}
<p>{{ item.name }} — Engraving: {{ item.custom_attributes.engraving }}</p>
{% endif %}
{% endfor %}Para agregar un metacampo de producto, como las instrucciones de cuidado, usa el siguiente código de 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 agregar un metacampo de cliente, usa el siguiente código de Liquid:
{% for m in order.customer.metafields %}
{% if m.key == 'loyalty_tier' %}<p>Loyalty tier: {{ m.value }}</p>{% endif %}
{% endfor %}Para agregar un código QR que enlace al pedido, usa el siguiente código de Liquid:
{{ order.qr_code_content | qrcode }}