Битрикс - недоступные товары ломают скрипт в каталоге

Битрикс - недоступные товары ломают скрипт в каталоге
19 Мая, 2019

Недавно нашли ошибки в 1С-Битрикс, связанную с работой скриптов. При разработке не был учтен очень важный момент связанный с отображением торговых предложений. Расскажет подробнее.

Очень важно учитывать доступность ссылки и работу страниц товара при продвижении сайта по следующим причинам:

  • Вы заказывали статьи на эти товары и ссылки;
  • Остаток товара не всегда есть и товар на заказ;
  • У вас включена реклама и закончились остатки у товара, но вы вовремя не отключили рекламу;
  • Престиж бренда и сайта.

В какой момент появляется ошибка

В настройка компонента 1С-Битрикс можно выбрать несколько вариантов: отдача 404 ответа (закрытие страницы от пользователя), отображение товара и торговых предложений с отсутствующими остатками, показывать товар и все предложения.

В настройках компонента выбраны следующие настройки:

  • Недоступные товары: отображать в конце списка или в общем списке.
  • Недоступные торговые предложения: не отображать.

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

Как исправить ошибку

Исправлять ошибку надо в файле script.js в компоненте catalog.element в функции JCCatalogElement. Проблема в том что в коде идет четкая проверка типа товаров и задается в переменной this.productType. Есть 3 варианта: ошибка, товар или набор, товар с торговыми предложениями. У нас строка 211 в script.js.

switch (this.productType) {
	case 0:// no catalog 
	case 1://product 
	case 2://set 
		this.initProductData(); break;
	case 3://sku
		this.initOffersData(); break; 
	default: this.errorCode = -1;
}

Чтобы исправить ошибку, перед этой выборкой вставляем проверку на наличие предложений товара. Если у товаров нет предложений, то указываем что это обычный товар.

if(!BX.type.isArray(this.params.OFFERS)){
	this.productType = 1;
}

После этой проверки скрипт начнет работать и все скрипты работают нормально. Снова начинает работать лупа и переключение между табами.

0
1С-Битрикс
196

Зарегистрируйтесь чтобы оставить комментарий
Бесплатная консультация
Какие услуги вас интересуют?
У вас уже есть список правок?
Консультация по всем вопросам, заявка вас ни к чему не обязываем.
Информация о персональных данных авторов обращений, направленных в электронном виде, хранится и обрабатывается с соблюдением требований российского законодательства о персональных данных.
Приложить необходимые документы и материалы в электронной форме можно в любой последовательности одним самостоятельным вложением файла или с архивированием (файл вложения) по одному из разных типов допустимых форматов:
текстового (графического) формата: txt, doc, docx, rtf, xls, xlsx, pps, ppt, odt, ods, odp, pub, pdf, jpg, jpeg, bmp, png, tif, gif, pcx;
архивного (файл вложения) формата: zip, rar;
Иные форматы не обрабатываются в информационных системах компании Disprove.