Активно работая с 1С-Bitrix появилась необходимость работы с Яндекс.Маркет для интернет-магазинов, однако далеко не все магазины оказываются технически готовы к этому. Чаще всего работа с Яндекс.Маркет является не сложной, сайт должен соответствовать правилам системы и генерировать корректный прайс-лист. К сожалению далеко не всегда возможно выводить корректный прайс-лист из-за изначальной структуры каталога, которую подготовили в момент разработки сайта и должны были учесть.
На нашем примере мы работаем с сайтом, где структуру каталога не учли и поэтому официальный компонент Яндекс.Маркет выгружает некорректный прайс лист, где грузятся все SKU, которые имеют один адрес и при переходе по ссылке у нас показывается дефолтная карточка, на что мы сразу слетаем с Яндекс.Маркета по качеству — ошибка несоответствия цены и карточки предложения. К сожалению ункальный URL для SKU тоже указать нельзя, т.к. его не внесли при формировании каталога товаров для торговых предложений.
Как исправить?
Существует два варианта исправления данной ситуации:
//set params if empty $arParams["PRODUCT_PRICE_CODE"] = empty($arParams["PRODUCT_PRICE_CODE"]) ? array() : $arParams["PRODUCT_PRICE_CODE"]; $arParams["AVAILABLE_OFFERS"] = empty($arParams["AVAILABLE_OFFERS"]) ? array() : $arParams["AVAILABLE_OFFERS"]; $arParams["PICTURE_HEIGHT"] = empty($arParams["PICTURE_HEIGHT"]) ? "250" : $arParams["PICTURE_HEIGHT"]; $arParams["PICTURE_WIDTH"] = empty($arParams["PICTURE_WIDTH"]) ? "250" : $arParams["PICTURE_WIDTH"]; $arParams["IMAGE_QUALITY"] = empty($arParams["IMAGE_QUALITY"]) ? "80" : $arParams["IMAGE_QUALITY"]; $arParams["IBLOCK_ID"] = empty($arParams["IBLOCK_ID"]) ?: $arParams["IBLOCK_ID"];
Над ними (примерно на 50-70 строке) вставить:
/* ID FIX by Guide-Group. (https://ws-home.ru/) */ if (intval($_GET['utm_source']) > 0) { $arParams["PRODUCT_ID"] = intval($_GET['utm_source']); }
После данных изменений чистим кэш компонентов. Теперь при переходе по ссылке с UTM_SOURCE=X будет показан корректный ID товара. Однако убедитесь в корректности передаваемых id через utm, чтобы цена и наименования товара соответствовали.
Данное решение является не самым правильным, но не все владельцы магазинов готовы переделывать каталог товаров. Более корректным будет изначально задать корректную структуру каталога, где инфблоком для SKU является инфоблоки торговых предложений, а не еще один инфоблок каталога. Однако способ рабочий.