Пользовательские блоки Liquid для печатных квитанций

Вы можете использовать пользовательский блок Liquid, чтобы добавить свой контент в шапку или футер печатной квитанции. Например, данные о заказе, информацию о клиенте, свойства товара, метаполя и штрих-коды.

Пользовательские блоки Liquid отображаются на печатных квитанциях для завершенных заказов онлайн и в Point of Sale. Они не отображаются для заказов, оформленных офлайн.

Вы можете добавить пользовательский блок Liquid в визуальном редакторе квитанций в панели администратора Shopify. Значения, на которые вы ссылаетесь, извлекаются из данных квитанции при ее печати. Например, следующий код Liquid добавляет примечание к заказу в квитанцию, если оно существует:

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

Синтаксические правила Liquid

Прежде чем создавать пользовательский блок Liquid, ознакомьтесь со следующими правилами синтаксиса:

  • В именах переменных используются строчные буквы и символы подчеркивания. Этот формат известен как snake_case. Например: order.total_price, order.customer.display_name и order.line_items.
  • Денежные суммы представлены в виде простых чисел. Форматируйте их с помощью фильтра money, например {{ order.total_price | money }}.
  • Защитите необязательные значения оператором if, чтобы избежать вывода пустой строки. Например: {% if order.customer.email %}{{ order.customer.email }}{% endif %}.
  • Перебирайте списки с помощью оператора for, например {% for item in order.line_items %} ... {% endfor %}.
  • Некоторые теги Liquid не поддерживаются. Вы не можете использовать assign, capture, include, render, raw, increment или decrement. Если в вашем блоке используется неподдерживаемый тег, квитанция не будет сохранена, и появится сообщение об ошибке.
  • Пользовательский блок Liquid может содержать до 50 КБ кода.

HTML и CSS

Вы можете использовать базовый HTML в пользовательском блоке Liquid для структурирования контента, например <p>, <br>, <strong>, <em>, заголовки, списки и ссылки. Ваш контент использует существующие шрифты и размеры квитанции.

Вы не можете использовать CSS для изменения внешнего вида квитанции. Блоки <style> и атрибуты style не поддерживаются, поэтому пользовательский блок Liquid не может изменить стиль или скрыть контент в других местах квитанции. Теги <script>, обработчики событий (такие как onclick) и ссылки javascript: также не поддерживаются.

Если ваш блок содержит неподдерживаемый HTML, квитанция не будет сохранена, и появится сообщение об ошибке. Удалите неподдерживаемый HTML и сохраните изменения еще раз.

Переменные и объекты

Пользовательский блок Liquid может ссылаться на следующие объекты и переменные. Некоторые значения отсутствуют в стандартной квитанции, поэтому пользовательский блок Liquid — один из способов их добавить.

Переменные верхнего уровня

В пользовательском блоке Liquid доступны следующие переменные верхнего уровня.

Описание переменных верхнего уровня, доступных для пользовательского блока Liquid
ПеременнаяОписание
order
Заказ, который печатается.
shop
Магазин.
location
Розничная точка.
settings
Настройки отображения квитанции (переключатели, настроенные в редакторе).
purchased_gift_cards
Подарочные карты, приобретенные в рамках этого заказа.
staff_member_description
Сотрудник, за которым закреплен заказ (если включено отображение персонала).
locale
Локаль квитанции, например en.
is_pickup
Является ли заказ заказом на самовывоз.
pickup_location
Точка самовывоза, если применимо.

Объект заказа

Описание объекта заказа
СвойствоОписание
name
Имя заказа, например #1001.
created_at
Временная метка заказа. Используется с фильтром date.
note
Примечание к заказу.
subtotal_price
Промежуточный итог. Форматируется с помощью фильтра money.
total_price
Итог. Форматируется с помощью фильтра money.
shipping_price
Стоимость доставки. Форматируется с помощью фильтра money.
total_tip_received
Общая сумма чаевых. Форматируется с помощью фильтра money.
balance_due
Оставшаяся к оплате сумма. Форматируется с помощью фильтра money.
change_due
Выданная сдача. Форматируется с помощью фильтра money.
taxes_included
Включен ли налог в цены.
receipt_number
Номер квитанции.
barcode_content
Контент для кодирования в штрих-коде.
qr_code_content
Контент для кодирования в QR-коде. Используется с фильтром qrcode.
line_items
Приобретенные предметы. Свойства каждого предмета перечислены в объекте позиции заказа.
transactions
Оплаты. Свойства каждой оплаты перечислены в объекте транзакции.
discounts
Скидки на уровне заказа. Свойства каждой скидки перечислены в объекте скидки.
tax_lines
Строки налогов. Свойства каждой строки налога перечислены в объекте строки налога.
refunds
Возвраты платежей по заказу.
shipping_address
Адрес доставки. Свойства адреса перечислены в объекте адреса.
customer
Данные клиента, перечисленные в объекте клиента.
metafields
Метаполя заказа.

Объект клиента

Объект order.customer содержит данные клиента.

Описание объекта клиента
СвойствоОписание
display_name
Отображаемое имя клиента.
first_name
Имя клиента.
last_name
Фамилия клиента.
email
Адрес электронной почты клиента.
phone
Номер телефона клиента.
default_address
Адрес клиента по умолчанию.
metafields
Метаполя клиента.

Объект позиции заказа

Каждая позиция в order.line_items содержит следующие свойства.

Описание объекта позиции заказа
СвойствоОписание
name
Название товара или позиции.
variant_title
Вариант, например Large / Blue.
sku
Артикул.
vendor
Продавец.
quantity
Количество.
price
Цена за единицу товара. Форматируется с помощью фильтра money.
total_price
Итоговая сумма по позиции. Форматируется с помощью фильтра money.
discounted_total_price
Итоговая сумма по позиции после применения скидок. Форматируется с помощью фильтра money.
discounted_unit_price
Цена за единицу товара после применения скидок. Форматируется с помощью фильтра money.
discounts
Скидки, примененные к позиции.
selling_plan_name
Название подписки или плана продаж (если есть).
staff_member_description
Сотрудник, за которым закреплена позиция.
custom_attributes
Свойства позиции, доступные по ключу.
product_metafields
Метаполя товара, доступные по ключу.
variant_metafields
Метаполя варианта, доступные по ключу.

Объект транзакции

Каждый платеж в order.transactions содержит следующие свойства. Кредит магазина, потраченный на заказ, указывается как платеж с названием Store credit. Оставшийся баланс кредита магазина клиента недоступен в качестве переменной.

Описание объекта транзакции
СвойствоОписание
name
Название способа оплаты, например Visa, наличные или кредит магазина.
payment_type
Код типа оплаты.
amount
Сумма. Форматируется с помощью фильтра money.
kind
Вид транзакции.
status
Статус транзакции.
credit_card_number
Маскированный номер карты (если применимо).
created_at
Временная метка транзакции.
additional_details
Дополнительные строки с данными об оплате.

Объект магазина

Объект shop содержит данные магазина.

Описание объекта магазина
СвойствоОписание
name
Название магазина.
domain
Домен магазина.
currency
Валюта магазина.
id
ИД магазина.

Объект места расположения

Объект location содержит данные места расположения розничной точки.

Описание объекта места расположения
СвойствоОписание
name
Название места расположения.
address1
Первая строка адреса.
address2
Вторая строка адреса.
city
Город.
province
Провинция или штат.
province_code
Код провинции или штата.
zip
Почтовый индекс.
country
Страна.
phone
Номер телефона.
metafields
Метаполя места расположения.

Объект адреса

Адрес, например order.shipping_address или order.customer.default_address, содержит следующие свойства.

Описание объекта адреса
СвойствоОписание
company
Название компании.
name
Имя получателя.
address1
Первая строка адреса.
address2
Вторая строка адреса.
city
Город.
province
Провинция или штат.
province_code
Код провинции или штата.
zip
Почтовый индекс.
country
Страна.
country_code
Код страны.
phone
Номер телефона.

Объект скидки

Каждая скидка в order.discounts или item.discounts содержит следующие свойства.

Описание объекта скидки
СвойствоОписание
description
Описание скидки.
amount
Сумма скидки. Форматируется с помощью фильтра money.
percentage
Процент скидки.

Объект строки налога

Каждая строка налога в order.tax_lines содержит следующие свойства.

Описание объекта строки налога
СвойствоОписание
title
Название налога.
rate
Налоговая ставка в виде десятичной дроби.
rate_percentage
Налоговая ставка в процентах.
price
Сумма налога. Форматируется с помощью фильтра money.
taxable_amount
Сумма, облагаемая налогом. Форматируется с помощью фильтра money.

Объект подарочной карты

Каждая подарочная карта в purchased_gift_cards содержит следующие свойства.

Описание объекта подарочной карты
СвойствоОписание
code
Код подарочной карты.
masked_code
Замаскированный код подарочной карты.
balance
Баланс подарочной карты. Форматируется с помощью фильтра money.
created_at
Временная метка подарочной карты.
qr_code_content
Контент для кодирования в QR-коде.

Метаполя и свойства

Метаполя и свойства позиций бывают двух видов.

Метаполя и свойства позиций имеют ключи. Обращайтесь к значению напрямую по его ключу:

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

Метаполя заказов и клиентов представляют собой списки. Перебирайте их в цикле:

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

Ключи нормализуются в формат snake_case. Ключ типа Care Instructions или careInstructions доступен как care_instructions. Всегда указывайте значения с ключами в нижнем регистре с нижним подчеркиванием.

Доступность метаполей заказов и клиентов зависит от наличия этих метаполей в записи.

Фильтры Liquid

Вы можете использовать фильтры для форматирования информации в пользовательском блоке Liquid. Чтобы применить фильтр, добавьте символ вертикальной черты |, а затем фильтр в вывод Liquid, например {{ order.total_price | money }}.

Стандартные фильтры Liquid также работают. Чтобы узнать больше о фильтрах Liquid, ознакомьтесь со Справочником по фильтрам.

Описание фильтров, доступных для пользовательского блока Liquid
ФильтрПримерОписание
money
{{ order.total_price | money }}
Форматирует сумму в валюте квитанции.
date
{{ order.created_at | date: '%B %e, %Y' }}
Форматирует дату или время.
percent
{{ tax_line.rate | percent }}
Форматирует десятичную дробь в виде процентов, например 0,2 как 20%.
t
{{ 'receipt.total' | t }}
Возвращает переведенную метку.
barcode
{{ order.barcode_content | barcode }}
Отображает штрих-код.
qrcode
{{ order.qr_code_content | qrcode }}
Отображает QR-код.

Примеры пользовательских блоков Liquid

В следующих примерах добавляется контент, которого нет в шаблоне распечатанной квитанции по умолчанию.

Чтобы добавить примечание к заказу, если оно есть, используйте следующий код Liquid:

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

Чтобы добавить SKU рядом с каждым предметом, используйте следующий код Liquid:

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

Чтобы добавить свойство позиции, например гравировку, используйте следующий код Liquid:

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

Чтобы добавить метаполе продукта, например инструкции по уходу, используйте следующий код Liquid:

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

Чтобы добавить метаполе клиента, используйте следующий код Liquid:

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

Чтобы добавить QR-код со ссылкой на заказ, используйте следующий код Liquid:

{{ order.qr_code_content | qrcode }}