Использование переменных маркета в сообщениях
Переменные
В маркете доступны четыре переменные:
products— функция выбирает продукты.
{products("<filter>" 10 "manufacturer_name" "desc")}
sku— функция выбирает SKU.
{sku("<filter>" 10 "manufacturer_name" "desc")}
orders— функция выбирает заказы из списка заказов профиля.
{orders("<filter>" 10 "status" "asc")}
order— функция выбирает один заказ из списка заказов профиля.
{order("<filter>")}
Аргументы функции
("<filter>" 10 "manufacturer_name" "desc")
| Аргумент | Обязательный | Описание |
|---|---|---|
"<filter>" | Да | Фильтр — это строка условий. Позволяет выбрать продукты, SKU, заказы или позиции заказов, соответствующие заданным условиям. Например, можно выбрать продукты одного производителя или заказы, превышающие конкретную сумму. Подробную информацию смотрите ниже. |
10 | Да | Лимит. Сколько элементов массива необходимо перебрать. Максимальное значение — 30. Например, если указать значение 10, то фильтр выберет первые десять элементов из массива. |
"manufacturer_name" | Нет | Сортировка объектов по указанному полю. По умолчанию — без сортировки. |
"desc" | Нет | Направление сортировки.asc — по возрастанию (сортировка по умолчанию)desc — по убыванию |
Фильтр
Фильтр состоит из полей и операторов. Поля есть у каждого объекта в маркете. Например, у продуктов и SKU есть поле name (наименование товара), а у заказов есть поле total_price (общая стоимость заказа). В фильтре вы указываете поле и значение, которому оно должно соответствовать. Если поле объекта соответствует значению, то этот объект будет выбран и его данные можно будет подставить в шаблон.
Пример фильтра
Добавим в шаблон переменную "Заказы":
{orders (("order.total_price == '1000 RUB') && (order.custom_fields.field == 'lead._region')" 10 "id" "desc")}
Выделенная часть переменной является фильтром. Разберем его по частям:
-
order.total_price == '1000 RUB'— условие выберет все заказы, стоимость которых равна 1000 рублей. -
order.custom_fields.field == 'lead._region'— условие выберет заказы с дополнительным полем"field". Вместо"field"можно указать любое дополнительное (пользовательское) поле. Указанное равенство означает то, что значение поля"field"должно совпадать со значением региона в профиле клиента ("lead._region"). -
Оператор
&&указывает на то, что оба условия должны быть выполнены. -
Число 10 означает количество выводимых объектов,
"id"указывает на поле фильтрации, а"desc"— на сортировку по убыванию.
Ниже приведены поля и операторы, доступные в фильтре.
Операторы и функции в фильтре
| Оператор | Описание | Пример | Что будет выбрано |
|---|---|---|---|
| > | больше | order.delivery_cost > '300 RUB' | Заказы со стоимостью доставки больше 300 рублей |
| >= | больше или равно | order.delivery_cost >= '300 RUB' | Заказы со стоимостью доставки 300 рублей или больше |
| < | меньше | sku.count < '10' | SKU, которых осталось меньше 10 штук для продажи |
| <= | меньше или равно | sku.count <= '10' | Количество SKU для продажи равно 10 или больше |
| == | равно | order.status == '1' | Заказы со статусом "новый" |
| != | не равно | product.manufacturer_name != 'Apple' | Продукты, производителем которых не является Apple |
| && | И (оба условия соответствуют) | product.manufacturer_name == 'Apple' && product.price < '200 USD' | Продукты производителя Apple со стоимостью больше $200 |
| || | ИЛИ (одно из условий соответствует) | sku.manufacturer_name == 'MSI' || sku.manufacturer_name == 'Acer' | SKU с производителем MSI или Acer |
in('<field_name>', 'value1', 'value2'...'valueN') | Значение поля (<field_name>) совпадает с одним из указанных значений ('value1', 'value2') | in(product.external_id,'1','2','3') | Продукты с идентификатором равным 1, 2 или 3 |
contains('<field_name>', 'value1', 'value2'...'valueN') | Один из элементов массива совпадает с одним из указанных значений.<field_name> — массив'value1', 'value2' — значения, совпадение с которыми проверяется.Используется, если поле является массивом, т.е. содержит несколько элементов (например: категории, изображения, дополнительные поля). | contains(product.categories,'smartphone') | Продукты с категорией "smartphone" |
Работа с пользовательскими полями
Для фильтрации по пользовательским полям доступно два синтаксиса:
Универсальный синтаксис (рекомендуется)
product.custom_fields('external_id')
Мы рекомендуем использовать универсальный синтаксис product.custom_fields('external_id'), потому что он поддерживает любые типы идентификаторов — как числовые, так и строковые, включая специальные символы. Этот вариант гарантирует корректную работу фильтрации независимо от формата external_id вашего пользовательского поля.
Примеры:
{for $product in products("product.custom_fields('123') == 'красный'")}
{for $product in products("in(product.custom_fields('color'), 'red', 'blue')")}
{for $product in products("sku.custom_fields('45') > '100'")}
Строковый синтаксис (ограниченный)
product.custom_fields.field_name
Старый синтаксис product.custom_fields.field_name можно использовать только при условии, что external_id поля состоит исключительно из буквенных символов и не содержит цифр, дефисов или других специальных знаков.
Пример:
{for $product in products("product.custom_fields.brand == 'Apple'")}
Список доступных полей в фильтрах
Продукты
Префикс — product.
| Поле | Описание |
|---|---|
product.external_id | Идентификатор продукта |
product.name | Название продукта |
product.manufacturer_name | Название производителя |
product.url | URL страницы продукта на сайте магазина |
product.pictures | URL-ссылка на картинку продукта |
product.count | Количество продуктов, доступное для продажи |
product.is_available | Есть ли продукт в наличии у магазина |
product.delivery | Возможность курьерской доставки (по всем регионам, в которые доставляет магазин) |
product.barcode | Список штрихкодов продукта от производителя |
product.categories | Идентификатор категории продукта |
product.custom_fields.<external_id поля> | Идентификатор дополнительного поля. Для числовых ID используйте custom_fields('123') |