Шаблоны

При создании и редактировании прайс-листа можно использовать шаблоны для комбинирования значений из нескольких полей.

Синтаксис соответствует реализации SEO-полей в модуле Информационные блоки. Выражение начинается c {= и заканчивается }. Поддерживаются вложенные выражения. Подробнее о синтаксисе см. в курсе Разработчик Bitrix Framework.

  1. Функции
  2. Формулы

Чтобы использовать шаблоны:

  1. Перейдите в раздел Маркет для продавцов → Подготовка прайс-листа → Прайс-листы.
  2. Рядом с названием прайс-листа нажмите  → Редактировать прайс-лист.
  3. Перейдите на вкладку Сопоставлений полей с помощью кнопки Далее.
  4. В поле Источник выберите Шаблон.

По умолчанию шаблоны доступны для элементов <name>, <model>, <dimensions> и <param>. Чтобы использовать шаблоны для других элементов, включите экспертный режим. Как это сделать

Пример

Предложение {=iblock_offer_field.NAME} для товара {=iblock_element_field.NAME}

Функции

В шаблонах доступны встроенные функции, функции модуля «Информационные блоки» и пользовательские функции.

Встроенные функции

Функция Описание Пример
not Булево отрицание. Используется для элемента disabled

Отрицание доступности товара:

{=not catalog_product.AVAILABLE}`
sum Сумма. Используется для атрибута available

Сумма наличия на складах №1 и №2:

{=sum catalog_store.AMOUNT_1 catalog_store.AMOUNT_2}
subtract Вычитание

Исключение остатков склада №1 из общего количества:

{=subtract catalog_product.QUANTITY catalog_store.AMOUNT_1}
multiply Умножение

Доступное количество умноженное на два:

{=multiply catalog_product.QUANTITY "2"}
first Первое заполненное

Значения свойства предложения с идентификатором 20. Если поле не заполнено, показывать значения свойства товара с идентификатором 9:

{=first iblock_offer_property.20 iblock_element_property.9}
if Если

Если товар доступен, показывать «Подарок при заказе», иначе — «Необходимо предоплата»:

{=if catalog_product.AVAILABLE "Подарок при заказе" "Необходима предоплата"}

Пример шаблона с вложенным выражением

{=if {=not catalog_product.AVAILABLE} "Необходима предоплата"} — если товар недоступен, необходима предоплата. Можно использовать для элемента <sales_notes>.

Функции модуля «Информационные блоки»

Функция Описание Пример
upper Привести к верхнему регистру {=upper iblock_offer_field.NAME}
lower Привести к нижнему регистру {=lower iblock_offer_field.NAME}
translit Выполнить транслитерацию {=translit iblock_offer_field.NAME}
concat Объединить строки

Объединить название торгового предложения и элемента, разделитель ,:

{=concat iblock_offer_field.NAME iblock_element_field.NAME ", "}
limit Вывести n слов через разделитель

Вывести три слова из результата объединения «Текст для анонса» для предложения и элемента:

{=limit iblock_offer_field.PREVIEW_TEXT iblock_element_field.PREVIEW_TEXT " .,?!" 3}
contrast Выбрать n «контрастных» слов и привести к нижнему регистру {=contrast iblock_offer_field.PREVIEW_TEXT " .,?!" 20}
min Выбрать минимальное числовое значение {=min iblock_offer_property.11 iblock_element_property.5}
max Выбрать максимальное числовое значение {=max iblock_offer_property.11 iblock_element_property.5}
distinct Выбрать уникальные значения {=distinct iblock_offer_property.11 iblock_element_property.5}

Пользовательские функции

Набор функций можно расширить с помощью события OnTemplateGetFunctionClass модуля «Информационные блоки».

Функция является наследником класса Bitrix\Iblock\Template\Functions\FunctionBase и реализует метод calculate:

use Bitrix\Main;
use Bitrix\Iblock;

Main\Loader::includeModule('iblock');

class FunctionTrim extends Iblock\Template\Functions\FunctionBase
{
    public function calculate(array $parameters)
    {
        $parameters = $this->parametersToArray($parameters);
        
        return trim(implode(' ', $parameters));
    }
}
Скопировано

Чтобы зарегистрировать функцию, при срабатывании события OnTemplateGetFunctionClass верните успешный результат с названием класса функции в качестве параметра, если первый параметр события равен вашему названию:

use Bitrix\Main;

$eventManager = Main\EventManager::getInstance();

$eventManager->addEventHandler('iblock', 'OnTemplateGetFunctionClass', function(Main\Event $event) {
    $parameters = $event->getParameters();
    $functionName = $parameters[0];
    
    if ($functionName === 'trim')
    {
        return new Main\EventResult(Main\EventResult::SUCCESS, FunctionTrim::class);
    }
});		
Скопировано
Если имена совпадают, приоритет отдается в следующем порядке:
  1. Функции модуля «Информационные блоки»
  2. Пользовательские функции
  3. Встроенные функции
Сторонние модули, которые реализуют собственные пользовательские функции:

Формулы

При создании и редактировании прайс-листа также можно использовать формулы. Формулы — упрощенный интерфейс источника Шаблон. Вы можете выбрать одну из встроенных функций модуля и список полей, со значениями которых нужно произвести операцию.

Чтобы использовать формулы:

  1. Перейдите в раздел Маркет для продавцов → Подготовка прайс-листа → Прайс-листы.
  2. Рядом с названием прайс-листа нажмите  → Редактировать прайс-лист.
  3. Перейдите на вкладку Сопоставлений полей с помощью кнопки Далее.
  4. В поле Источник выберите Формула.