Yandex Metrika
sanches.free

Каталог Битрикс: скрытые торговые предложения и поломка script.js карточки

Контекст

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

Почему ломается JS

В шаблоне catalog.element логика JCCatalogElement ветвится по полю типа продукта. Для SKU ожидается инициализация предложений; если массива офферов фактически нет, внутренний код помечает конфигурацию как ошибочную и отключает интерактив (переключение картинок, табов и т.д.).

Практический фикс в шаблоне

Перед разбором productType проверьте, что this.params.OFFERS — осмысленный массив. Когда офферов нет, безопасно трактовать карточку как обычный товар без SKU и вызывать инициализацию простого продукта.

// Условие в script.js шаблона рядом с инициализацией JCCatalogElement
if (!BX.type.isArray(this.params.OFFERS)) {
    this.productType = 1;
}

После правки перепроверьте кеш композита и браузера: статический script.js должен обновиться на боевой копии.

Альтернативы

Иной путь — менять режим показа офферов или контент‑политику товара так, чтобы в карточке всегда оставался хотя бы один доступный SKU, но это уже продуктовое решение, а не патч скрипта.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии