• Модуль: 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]);
			}
		}
	}
}