При выгрузке каталога в Яндекс, вылилась ошибка что для каждого SKU нужна уникальная ссылка, при переходе по которой будет сразу активным торговое предложение. Т.к. шаблон индивидуальный то решения которые есть на форуме Bitrix не помогает. Есть ссылка к примеру магазин.ру/машина но у этой машины есть свойства (красная, зеленая, синяя) и каждое свойство имеет свой ид. Мне нужно чтобы при переходе по ссылке магазин.ру/машина/?pid=111 знатоки Битрикса меня поймут. Я нашел кусок кода который отвечает за все эти действия, но ничего не получается. Вот кусок кода модуля
<div class="offers">
<ul class="offer-list">
<? foreach ($arResult['OFFERS'] as $iKey => $arOffer): ?>
<li data-id="<?= $arOffer['ID']; ?>"<?= ($iKey == 0) ? ' class="active"' : ''; ?>>
<? if ($arOffer['PRICES'][$sPriceCode]['CAN_BUY'] == 'Y' && $arOffer['CATALOG_AVAILABLE'] == 'Y'): ?>
<span><?= $arOffer['PRICES'][$sPriceCode]['PRINT_DISCOUNT_VALUE']; ?></span>
<? endif; ?>
<?= $arOffer['NAME']; ?>
</li>
<? endforeach; ?>
</ul>
</div>
<?$this->setFrameMode(true);?>
</div>
Вот кусок кода скрипт js который отвечает за выбор SKU
var offers = $('.b-element .offer-list li');
offers.on('click', function(){
var element = $(this).closest('.b-buy'),
id = $(this).data('id');
offers.removeClass('active');
$(this).addClass('active');
$('.offer', element).hide().removeClass('active');
$('.offer-' + id, element).show();
});
});
Пытался сделать как-то так
var offers = $('.b-element .offer-list li');
offers.on('click', function(){
var element = $(this).closest('.b-buy'),
id = $(this).data('id');
offers.removeClass('active');
$(this).addClass('active');
loc = '?pid=' + this.offers[this.offerNum].ID;
history.pushState({}, '', loc);
$('.offer', element).hide().removeClass('active');
$('.offer-' + id, element).show();
});
});
Но ничего не выходит, на форуме Битрикса есть решения для стандартного шаблона и выглядит оно так
{
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
Но как переписать его под мои нужды знаний не хватает, может кто что подскажет буду очень благодарен.