К содержимому
Вывод в теме

Вывод в теме

Обновлено

Автоматическая подмена

Плагин регистрирует обработчик frontendProducts для события Shop-Script frontend_products. В обычном выводе, который вызывает это событие, вставлять отдельный вызов плагина в тему не требуется.

Обработчик работает, когда:

  • параметр маршрута action равен category;
  • в событие передан непустой массив products;
  • для товара и текущей категории сохранён вариант названия.

Плагин меняет поле name у соответствующего элемента массива товаров. Если записи для пары товара и категории нет, переданное имя остаётся прежним.

Как определяется категория

Сначала используется параметр маршрута category_id. Если он равен null, плагин ищет категорию по category_url: при url_type = 0 — по full_url, в остальных случаях — по url.

Если по этому адресу найдено больше одной категории, обработчик прекращает работу без подмены. Это условие стоит проверить при одинаковых адресах категорий в собственном маршруте.

Вывод имени в Smarty

Если список уже прошёл через событие frontend_products, используйте его обычное поле name. Например, внутри существующего цикла, где текущий товар находится в переменной $product:

{$product.name|escape}

Этот фрагмент только выводит имя из массива. Он сам не вызывает событие и не подгружает варианты названий.

У плагина нет собственного публичного хелпера для получения имени в шаблоне и нет шаблонов витрины для переопределения.

Если тема получает товары самостоятельно

Проверьте, что используемый способ получения списка вызывает frontend_products и что шаблон печатает поле name из обработанного массива. Прямой запрос к базе или отдельный источник названий не получает подмену автоматически.

Условие проверяется по странице, а не по назначению блока: другой список товаров на странице категории тоже может получить подмену, если проходит через это событие и содержит товары с вариантами для текущей категории. На странице поиска, отдельного товара и других страницах с action, отличным от category, этот обработчик названия не меняет.