- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/lib/component/elementlist.php
- Класс: BitrixIblockComponentElementList
- Вызов: ElementList::editTemplateJsOffers
protected function editTemplateJsOffers(&$item)
{
$matrix = array();
$boolSkuDisplayProperties = false;
$intSelected = -1;
foreach ($item['OFFERS'] as $offerKey => $offer)
{
if ($item['OFFER_ID_SELECTED'] > 0)
{
$foundOffer = ($item['OFFER_ID_SELECTED'] == $offer['ID']);
}
else
{
$foundOffer = $offer['CAN_BUY'];
}
if ($foundOffer && $intSelected == -1)
{
$intSelected = $offerKey;
}
unset($foundOffer);
$skuProps = false;
if (!empty($offer['DISPLAY_PROPERTIES']))
{
$boolSkuDisplayProperties = true;
$skuProps = array();
foreach ($offer['DISPLAY_PROPERTIES'] as $oneProp)
{
if ($oneProp['PROPERTY_TYPE'] === 'F')
continue;
$skuProps[] = array(
'CODE' => $oneProp['CODE'],
'NAME' => $oneProp['NAME'],
'VALUE' => $oneProp['DISPLAY_VALUE']
);
}
unset($oneProp);
}
$ratioSelectedIndex = $offer['ITEM_MEASURE_RATIO_SELECTED'];
$oneRow = array(
'ID' => $offer['ID'],
'NAME' => ($offer['~NAME'] ?? ''),
'TREE' => $offer['TREE'],
'DISPLAY_PROPERTIES' => $skuProps,
// compatible prices
'PRICE' => ($offer['RATIO_PRICE'] ?? $offer['MIN_PRICE'] ?? 0),
'BASIS_PRICE' => ($offer['MIN_PRICE'] ?? 0),
// new prices
'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,
'SECOND_PICT' => $offer['SECOND_PICT'],
'OWNER_PICT' => $offer['OWNER_PICT'],
'PREVIEW_PICTURE' => $offer['PREVIEW_PICTURE'],
'PREVIEW_PICTURE_SECOND' => $offer['PREVIEW_PICTURE_SECOND'],
'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'],
'CAN_BUY' => $offer['CAN_BUY'],
'CATALOG_SUBSCRIBE' => $offer['PRODUCT']['SUBSCRIBE']
);
unset($ratioSelectedIndex);
if (isset($offer['MORE_PHOTO_COUNT']) && $offer['MORE_PHOTO_COUNT'] > 0)
{
$oneRow['MORE_PHOTO'] = $offer['MORE_PHOTO'];
$oneRow['MORE_PHOTO_COUNT'] = $offer['MORE_PHOTO_COUNT'];
}
$matrix[$offerKey] = $oneRow;
}
if ($intSelected == -1)
{
$intSelected = 0;
}
if (!$matrix[$intSelected]['OWNER_PICT'])
{
$item['PREVIEW_PICTURE'] = $matrix[$intSelected]['PREVIEW_PICTURE'];
$item['PREVIEW_PICTURE_SECOND'] = $matrix[$intSelected]['PREVIEW_PICTURE_SECOND'];
}
$item['JS_OFFERS'] = $matrix;
$item['OFFERS_SELECTED'] = $intSelected;
$item['OFFERS_PROPS_DISPLAY'] = $boolSkuDisplayProperties;
}