Шаблоны
Синтаксис соответствует реализации SEO-полей в модуле Информационные блоки. Выражение начинается c {=
и заканчивается }
. Поддерживаются вложенные выражения. Подробнее о синтаксисе см. в курсе Разработчик Bitrix Framework.
Чтобы использовать шаблоны:
- Перейдите в раздел.
- Рядом с названием прайс-листа нажмите.
- Перейдите на вкладку Сопоставлений полей с помощью кнопки Далее.
- В поле Источник выберите Шаблон.
По умолчанию шаблоны доступны для элементов <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 "Подарок при заказе" "Необходима предоплата"} |
Функция | Описание | Пример |
---|---|---|
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} |
Функция | Описание | Пример |
---|---|---|
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);
}
});
Скопировано
- Функции модуля «Информационные блоки»
- Пользовательские функции
- Встроенные функции
Формулы
При создании и редактировании прайс-листа также можно использовать формулы. Формулы — упрощенный интерфейс источника Шаблон. Вы можете выбрать одну из встроенных функций модуля и список полей, со значениями которых нужно произвести операцию.
Чтобы использовать формулы:
- Перейдите в раздел.
- Рядом с названием прайс-листа нажмите.
- Перейдите на вкладку Сопоставлений полей с помощью кнопки Далее.
- В поле Источник выберите Формула.