- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/lib/component/element.php
- Класс: BitrixIblockComponentElement
- Вызов: Element::editTemplateJsOffers
protected function editTemplateJsOffers(&$item, $offerSet)
{
$matrix = [];
$intSelected = -1;
$offerText = $this->arParams['SHOW_SKU_DESCRIPTION'] === 'Y';
foreach ($item['OFFERS'] as $keyOffer => $offer)
{
if ($item['OFFER_ID_SELECTED'] > 0)
{
$foundOffer = ($item['OFFER_ID_SELECTED'] == $offer['ID']);
}
else
{
$foundOffer = $offer['CAN_BUY'];
}
if ($foundOffer && $intSelected == -1)
{
$intSelected = $keyOffer;
}
unset($foundOffer);
$skuProps = false;
if (!empty($offer['DISPLAY_PROPERTIES']))
{
$skuProps = [];
foreach ($offer['DISPLAY_PROPERTIES'] as $oneProp)
{
if ($oneProp['PROPERTY_TYPE'] === IblockPropertyTable::TYPE_FILE)
{
continue;
}
$skuProps[] = [
'CODE' => $oneProp['CODE'],
'NAME' => $oneProp['NAME'],
'VALUE' => $oneProp['DISPLAY_VALUE'],
];
}
unset($oneProp);
}
if (isset($offerSet[$offer['ID']]))
{
$offer['OFFER_GROUP'] = true;
$item['OFFERS'][$keyOffer]['OFFER_GROUP'] = true;
}
$ratioSelectedIndex = $offer['ITEM_MEASURE_RATIO_SELECTED'];
$firstPhoto = reset($offer['MORE_PHOTO']);
$oneRow = [
'ID' => $offer['ID'],
'CODE' => $offer['CODE'],
'NAME' => $offer['~NAME'] ?? $item['~NAME'],
'TREE' => $offer['TREE'],
'DISPLAY_PROPERTIES' => $skuProps,
'PREVIEW_TEXT' => $offerText ? $offer['PREVIEW_TEXT'] : '',
'PREVIEW_TEXT_TYPE' => $offerText ? $offer['PREVIEW_TEXT_TYPE'] : '',
'DETAIL_TEXT' => $offerText ? $offer['DETAIL_TEXT'] : '',
'DETAIL_TEXT_TYPE' => $offerText ? $offer['DETAIL_TEXT_TYPE'] : '',
'ITEM_PRICE_MODE' => $offer['ITEM_PRICE_MODE'],
'ITEM_PRICES' => $offer['ITEM_PRICES'],
'ITEM_PRICE_SELECTED' => $offer['ITEM_PRICE_SELECTED'],
'ITEM_QUANTITY_RANGES' => $offer['ITEM_QUANTITY_RANGES'],
'ITEM_QUANTITY_RANGE_SELECTED' => $offer['ITEM_QUANTITY_RANGE_SELECTED'],
'ITEM_MEASURE_RATIOS' => $offer['ITEM_MEASURE_RATIOS'],
'ITEM_MEASURE_RATIO_SELECTED' => $ratioSelectedIndex,
'PREVIEW_PICTURE' => $firstPhoto,
'DETAIL_PICTURE' => $firstPhoto,
'CHECK_QUANTITY' => $offer['CHECK_QUANTITY'],
'MAX_QUANTITY' => $offer['PRODUCT']['QUANTITY'],
'STEP_QUANTITY' => $offer['ITEM_MEASURE_RATIOS'][$ratioSelectedIndex]['RATIO'], // deprecated
'QUANTITY_FLOAT' => is_float($offer['ITEM_MEASURE_RATIOS'][$ratioSelectedIndex]['RATIO']), // deprecated
'MEASURE' => $offer['ITEM_MEASURE']['TITLE'],
'OFFER_GROUP' => (isset($offerSet[$offer['ID']]) && $offerSet[$offer['ID']]),
'CAN_BUY' => $offer['CAN_BUY'],
'CATALOG_SUBSCRIBE' => $offer['PRODUCT']['SUBSCRIBE'],
'SLIDER' => $offer['MORE_PHOTO'],
'SLIDER_COUNT' => $offer['MORE_PHOTO_COUNT'],
];
unset($ratioSelectedIndex);
$matrix[$keyOffer] = $oneRow;
}
if ($intSelected == -1)
{
$intSelected = 0;
}
$item['JS_OFFERS'] = $matrix;
$item['OFFERS_SELECTED'] = $intSelected;
if ($matrix[$intSelected]['SLIDER_COUNT'] > 0)
{
$item['MORE_PHOTO'] = $matrix[$intSelected]['SLIDER'];
$item['MORE_PHOTO_COUNT'] = $matrix[$intSelected]['SLIDER_COUNT'];
}
$item['OFFERS_IBLOCK'] = $this->storage['SKU_IBLOCK_INFO']['IBLOCK_ID'];
}