Перейти к содержимому

Функции и поля подстановок ​

Справочник для шаблонов выгрузки. Как устроена сама подстановка {поле|@} — в основах, готовые шаблоны — в рецептах для маркетплейсов.

Функции преобразования ​

Иногда мало просто вставить значение, его нужно изменить. Для этого после символа @ вы можете написать одну или несколько функций через двоеточие : (последовательно слева направо):

text
@:функция1:функция2(аргумент)...

Текст и регистр ​

  • upper — ВСЕ БУКВЫ ЗАГЛАВНЫЕ.

    • Пример: {partname|@:upper} ➡️ ДВИГАТЕЛЬ В СБОРЕ
  • lower — все буквы строчные.

    • Пример: {producer|@:lower} ➡️ toyota
  • cap — Первая буква заглавная (идеально для названий).

    • Пример: {partname|@:cap} ➡️ Амортизатор передний
  • title — Каждое Слово С Заглавной Буквы.

    • Пример: {modelname|@:title} ➡️ Land Cruiser Prado
  • trim — Удалить случайные пробелы в начале и в конце.

  • squish — Сжать множественные пробелы и переносы в один аккуратный пробел.

  • striphtml — Удалить все HTML-теги.

    • Пример: {detailcomment|@:striphtml} очистит текст от тегов <p>, <b>, <div>.
  • translit — Перевести русский текст в транслит (латиницу).

    • Пример: {partname|@:translit} ➡️ Kapot
  • replace('что_заменить', 'на_что') — Замена текста.

    • Пример: @:replace('оригинал','аналог')
  • sep('разделитель') — Сменить разделитель в списке. Списки (например, совместимые OEM-номера listrule1) выводятся через запятую; sep пересобирает их с нужным разделителем, убирая лишние пробелы и пустые элементы.

    • Пример для Ozon: {listrule1|@:sep(';')} ➡️ 90919-01253;90919-01164
    • С пробелом после разделителя: {listrule1|@:sep('; ')} ➡️ 90919-01253; 90919-01164
  • map('исходное','результат', ...) — Сопоставление целого значения по списку пар. Сравнение не учитывает регистр и пробелы по краям; если подходят несколько ключей, используется первая пара. Неизвестное значение и некорректный нечётный список пар остаются без изменений.

    • Пример для внешнего прайса:

      text
      {price_season|@:map(
        'Всесезонная','всесезонные',
        'Летняя','летние',
        'Лето','летние',
        'Зимняя липучка','зимние',
        'Зима','зимние',
        'Зимняя с шипами','шипованные'
      )}

    Аргументы map — обычный текст, а не коды других полей. Если сезон и признак шипов хранятся отдельно, сначала соберите оба токена, а затем примените map ко всему полю через [[fn:map(...)]].

Ограничение длины ​

  • truncate(макс_длина) или truncate(макс_длина, 'хвостик') Обрезает слишком длинный текст до указанного числа символов. Хвостик (например, троеточие) учитывается в общей длине, чтобы не превысить лимит площадки.
    • Пример: {detailcomment|@:truncate(50, '...')} ➡️ Отличная деталь без пробега по РФ... (длина ровно 50)
  • truncatewords(кол_во_слов) Оставляет только указанное количество слов.
    • Пример: {detailcomment|@:truncatewords(3)} ➡️ Двигатель в сборе

Округление, числа и даты ​

  • round или round(знаков_после_запятой) Округляет числа. По умолчанию — до целого.
    • Пример: {pricerec|@:round} превратит 15200.45 в 15200.
  • numformat('формат') Задает красивое отображение чисел (разделение тысяч пробелами, копейки).
    • Пример: @:numformat('### ###') превратит 254000 в 254 000.
  • dateformat('формат') Красивый вывод даты.
    • Пример: @:dateformat('dd.MM.yyyy') выведет дату как 30.05.2026.

Арифметика между подстановками ​

Текущее значение можно сложить, вычесть, умножить или разделить на число либо значение другой подстановки. В скобках указывается числовая константа или код второго поля:

  • add(число или поле) — сложение.
  • sub(число или поле) — вычитание из текущего значения.
  • mul(число или поле) — умножение.
  • div(число или поле) — деление текущего значения.

Например, если price = 20000 — цена комплекта из четырёх штук, постоянное количество можно указать прямо в функции:

text
{price|@:div(4):round(2):numformat('0.00')}

Если количество хранится в подстановке count, используется её код:

text
{price|@:div(count):round(2):numformat('0.00')}

В обоих случаях результат — 5000.00. Для дробной константы используется точка: div(2.5). Арифметику можно соединять с остальными функциями pipeline и применять ко всему собранному полю через [[fn:div(count)]].

В каждой функции указывается ровно один операнд: div(4) — верно, div(4,2) или div(4,) — ошибка, такой шаблон не сохранится.

Деление округляется до 2 знаков после запятой (100 / 3 ➡️ 33.33), спорные половинки — в бо́льшую сторону (1 / 8 ➡️ 0.13). Хвостовые нули не выводятся: 1.5 × 1000 ➡️ 1500, а не 1500.0. Если нужно всегда показывать оба знака, добавьте numformat('0.00'), как в примерах выше.

Если одно из значений пустое или не является числом, делитель равен нулю либо результат выходит за допустимый числовой диапазон, вся подстановка становится пустой. При необходимости после операции можно добавить default:

text
{price|@:div(count):default('0')}

Значение по умолчанию и резервные поля ​

  • default('значение_по_умолчанию') Если поле пустое, подставляет ваш текст.
    • Пример: {producer|@:default('Оригинал')}
  • coalesce(поле1, поле2, ...) Если текущее поле пустое, система проверяет другие указанные поля по очереди и выводит первое заполненное.
    • Пример: {oem|@:coalesce(catalognoplain, intnum)} — выведет оригинальный OEM номер. Если его нет — выведет OEM2. Если и его нет — выведет инвентарный номер детали (он заполнен всегда).

Справочник полей по типам товаров ​

В зависимости от того, какой каталог вы выгружаете, вам доступны различные переменные. Ниже приведены самые популярные из них:

Детали (б/у и новые) ​

  • partname — Стандартное название детали (например, Двигатель).
  • oem — OEM-номер детали.
  • catalognoplain / productidplain — Чистый OEM-номер без черточек и точек.
  • intnum — Внутренний номер детали (артикул).
  • detailcomment / comment — Описание / комментарий.
  • producer — Производитель / бренд.
  • pricerec — Рекомендованная розничная цена.
  • pricein / priceopt — Закупочная / Оптовая цена.
  • year — Год выпуска авто-донора.
  • mileage — Пробег авто-донора.
  • modelname — Название модели (например, Toyota Camry).
  • enginename — Модель двигателя.
  • transmission — Коробка передач.
  • extcolor — Цвет детали/машины.
  • storename — Название склада хранения.
  • partexporttitle / partexportdescription — Только для новых деталей: заголовок и описание объявления из полей «Заголовок для выгрузок» и «Описание для выгрузок» на вкладке «Дополнительно» карточки товара. У товара без текста подстановка пустая, поэтому для таких товаров удобно задать запасной текст функцией default.
  • usedexporttitle / usedexportdescription — Только для б/у деталей: заголовок и описание объявления из полей «Заголовок для выгрузок» и «Описание для выгрузок» на вкладке «Еще» редактора б/у товара. Шаблоны по умолчанию эти подстановки не используют: текст попадёт в выгрузку только после их добавления в шаблон. У товара без текста подстановка пустая, поэтому для таких товаров удобно задать запасной текст функцией default.

Шины ​

  • tyrediameter — Диаметр шины (например, R16).
  • tyrewidth — Ширина профиля шины (например, 205).
  • tyreheight — Высота профиля шины (например, 55).
  • tyreseason — Сезонность (Летние, Зимние, Всесезонные).
  • tyremake / tyremodel — Производитель и модель шины.
  • tyrewear — Процент износа шины.
  • tyrespikes — Наличие шипов (да/нет).
  • tyrecountkit / tyrekit — Количество шин в комплекте и название комплекта, в который входит шина.
  • tyreexporttitle / tyreexportdescription — Заголовок и описание объявления из полей «Заголовок для выгрузок» и «Описание для выгрузок» на вкладке «Дополнительно» карточки шины. У шины без текста подстановка пустая, поэтому для таких шин удобно задать запасной текст функцией default.

Диски ​

  • wheeldiameter — Диаметр диска.
  • wheelwidth — Ширина диска (в дюймах).
  • wheeloffset — Вылет диска (ET).
  • wheelpcd — Расстояние между крепежными отверстиями.
  • wheeltype — Тип диска (Литые, Штампованные, Кованые).
  • wheelcountkit / wheelkit — Количество дисков в комплекте и название комплекта, в который входит диск.

База знаний SoftRazborki