Решение, как в Битрикс сделать уникальный URL для каждого торгового предложения SKU, чтобы при переходе по такой ссылке, отображался нужный цвет или размер
При выгрузке (экспорте) товаров с торговыми предложениями SKU (цвета, размеры) на Яндекс.Маркет, Яндекс требует отдельную ссылку для каждого торгового предложения и служба контроля качества (СКК) проверяет, чтобы при переходе по такой ссылке, на детальной карточке товара отображался нужный цвет и размер. В штатном шаблоне Битрикс магазина такая функция не предусмотрена. Для решения проблемы нужно сделать несколько изменений в файлах шаблона и в файле экспорта в Яндекс.Маркет.
ВНИМАНИЕ! Данное решение подходит только для штатного шаблона. Если у вас нестандартный шаблон, обращайтесь к онлайн-консультанту (кнопка слева экрана «Помочь в решении?»).
ВНИМАНИЕ! Данное решение подходит только для штатного шаблона. Если у вас нестандартный шаблон, обращайтесь к онлайн-консультанту (кнопка слева экрана «Помочь в решении?»).
Решение:
В файле экспорта в Яндекс.Маркет /bitrix/php_interface/include/catalog_export/yandex_run.php найдём строку:
Это чтобы при переходе между торговыми предложениями внутри карточки товара, менялся URL. Например, /product/?pid=23 для белого цвета, /product/?pid=24 - для черного. При клике на черный ссылка в адресной строке, меняется с pid=23 на pid=24.
Найдём код по CSS классу bx_catalog_item_images:
$strOfferTemplateURL = '#PRODUCT_URL###ID#';Заменим на:
$strOfferTemplateURL = '#PRODUCT_URL#/?pid=#ID#';В файле штатного шаблона Битрикс (Современный интернет-магазин bitrix.eshop) /ВАШ_ШАБЛОН/components/bitrix/catalog/default/bitrix/catalog.element/.default/script.js найдём код:
window.JCCatalogElement.prototype.SetCurrent = function()
{
var i = 0,
j = 0,
strName = '',
arShowValues = false,
arCanBuyValues = [],
arFilter = {},
tmpFilter = [],
current = this.offers[this.offerNum].TREE;После этого кода, вставим://CUSTOM START
paramsUrl = window.location.search,
pidRegExp = new RegExp(/[?&]pid=(\d+)/),
pid = pidRegExp.exec(paramsUrl);
if (pid && pid[1]) {
for (i = 0; i < this.offers.length; i++)
{
if (this.offers[i].ID == pid[1]) {
current = this.offers[i].TREE;
}
}
}
//CUSTOM ENDВ script.js найдём код:window.JCCatalogElement.prototype.SelectOfferProp = function()В конце функции, перед скобкой } вставим код (Это влияет на смену ссылок с pid=123 при выборе SKU)
loc = '?pid=' + this.offers[this.offerNum].ID;
history.pushState({}, '', loc);Внесём правки в шаблоне списка товаров /ВАШ_ШАБЛОН/components/bitrix/catalog/default/bitrix/catalog.section/.default/template.php - добавим в ссылку, ведущую на детальную страницу, ?pid=123 (ID первого торгового предложения).Это чтобы при переходе между торговыми предложениями внутри карточки товара, менялся URL. Например, /product/?pid=23 для белого цвета, /product/?pid=24 - для черного. При клике на черный ссылка в адресной строке, меняется с pid=23 на pid=24.
Найдём код по CSS классу bx_catalog_item_images:
<a id="<? echo $arItemIDs['PICT']; ?>" href="<? echo $arItem['DETAIL_PAGE_URL']; ?>" class="bx_catalog_item_images" style="background-image: url('<? echo $arItem['PREVIEW_PICTURE']['SRC']; ?>')" title="<? echo $imgTitle; ?>">Заменим на:<a id="<? echo $arItemIDs['PICT']; ?>" href="<? echo $arItem['DETAIL_PAGE_URL']; ?>?pid=<?=$arItem['OFFERS']['0']['ID']?>" class="bx_catalog_item_images" style="background-image: url('<? echo $arItem['PREVIEW_PICTURE']['SRC']; ?>')" title="<? echo $imgTitle; ?>">Похожие решения:
Комментарии (0)