Пользовательские блоки 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 доступны следующие переменные верхнего уровня.
| Переменная | Описание |
|---|---|
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 | Фамилия клиента. |
| Адрес электронной почты клиента. | |
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, ознакомьтесь со Справочником по фильтрам.
| Фильтр | Пример | Описание |
|---|---|---|
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 }}