- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/lib/component/element.php
- Класс: BitrixIblockComponentElement
- Вызов: Element::editTemplateItems
protected function editTemplateItems(&$item)
{
$skuPropList =& $this->arResult['SKU_PROPS'];
if (!isset($item['CATALOG_QUANTITY']))
{
$item['CATALOG_QUANTITY'] = 0;
}
$item['CATALOG_QUANTITY'] = $item['CATALOG_QUANTITY'] > 0 && is_float($item['ITEM_MEASURE_RATIOS'][$item['ITEM_MEASURE_RATIO_SELECTED']]['RATIO'])
? (float)$item['CATALOG_QUANTITY']
: (int)$item['CATALOG_QUANTITY'];
$item['CATALOG'] = false;
$item['CATALOG_SUBSCRIPTION'] = isset($item['CATALOG_SUBSCRIPTION']) && $item['CATALOG_SUBSCRIPTION'] === 'Y' ? 'Y' : 'N';
CIBlockPriceTools::getLabel($item, $this->arParams['LABEL_PROP']);
$this->editTemplateProductSlider($item, $item['IBLOCK_ID'], 0, $this->arParams['ADD_DETAIL_TO_SLIDER'] === 'Y', array($this->arResult['DEFAULT_PICTURE']));
$this->editTemplateCatalogInfo($item);
$item['SHOW_OFFERS_PROPS'] = false;
if ($item['CATALOG'] && !empty($item['OFFERS']))
{
$needValues = array();
foreach ($item['OFFERS'] as &$offer)
{
foreach (array_keys($skuPropList) as $strOneCode)
{
if (isset($offer['DISPLAY_PROPERTIES'][$strOneCode]))
{
if (!isset($needValues[$skuPropList[$strOneCode]['ID']]))
{
$needValues[$skuPropList[$strOneCode]['ID']] = array();
}
$valueId = $skuPropList[$strOneCode]['PROPERTY_TYPE'] == IblockPropertyTable::TYPE_LIST
? $offer['DISPLAY_PROPERTIES'][$strOneCode]['VALUE_ENUM_ID']
: $offer['DISPLAY_PROPERTIES'][$strOneCode]['VALUE'];
$needValues[$skuPropList[$strOneCode]['ID']][$valueId] = $valueId;
unset($valueId);
}
}
unset($strOneCode);
}
unset($offer);
if (!empty($needValues))
CIBlockPriceTools::getTreePropertyValues($skuPropList, $needValues);
unset($needValues);
$this->editTemplateOfferProps($item);
$offerSet = $this->editTemplateProductSets($item);
$this->editTemplateJsOffers($item, $offerSet);
}
if ($item['MODULES']['catalog'] && $item['CATALOG'])
{
if (
$item['CATALOG_TYPE'] == CatalogProductTable::TYPE_PRODUCT
|| $item['CATALOG_TYPE'] == CatalogProductTable::TYPE_SET
)
{
if (isset($item['MIN_PRICE']))
{
CIBlockPriceTools::setRatioMinPrice($item, false);
$item['MIN_BASIS_PRICE'] = $item['MIN_PRICE'];
}
}
if (
CatalogConfigFeature::isProductSetsEnabled()
&& (
$item['CATALOG_TYPE'] == CatalogProductTable::TYPE_PRODUCT
|| $item['CATALOG_TYPE'] == CatalogProductTable::TYPE_SET
)
)
{
$item['OFFER_GROUP'] = (isset($item['PRODUCT']['BUNDLE']) && $item['PRODUCT']['BUNDLE'] === 'Y');
}
}
if (!empty($item['DISPLAY_PROPERTIES']))
{
foreach ($item['DISPLAY_PROPERTIES'] as $propKey => $displayProperty)
{
if ($displayProperty['PROPERTY_TYPE'] === 'F')
{
unset($item['DISPLAY_PROPERTIES'][$propKey]);
}
}
}
}