- Модуль: iblock
- Путь к файлу: ~/bitrix/modules/iblock/lib/component/elementlist.php
- Класс: BitrixIblockComponentElementList
- Вызов: ElementList::getTemplateSkuPropList
public function getTemplateSkuPropList()
{
$skuPropList = array();
if ($this->arResult['MODULES']['catalog'] && !empty($this->storage['IBLOCK_PARAMS']))
{
$elementIndex = array_keys($this->elements);
foreach ($this->storage['IBLOCK_PARAMS'] as $iblockId => $iblockParams)
{
$skuPropList[$iblockId] = array();
$sku = CCatalogSku::GetInfoByProductIBlock($iblockId);
$boolSku = !empty($sku) && is_array($sku);
if ($boolSku && !empty($iblockParams['OFFERS_TREE_PROPS']) && $this->arParams['PRODUCT_DISPLAY_MODE'] === 'Y')
{
$skuPropList[$iblockId] = CIBlockPriceTools::getTreeProperties(
$sku,
$iblockParams['OFFERS_TREE_PROPS'],
array(
'PICT' => $this->arResult['DEFAULT_PICTURE'],
'NAME' => '-'
)
);
if (!empty($skuPropList[$iblockId]))
{
if (!empty($this->productWithOffers[$iblockId]))
{
$skuPropIds = array();
foreach ($skuPropList[$iblockId] as $property)
{
$skuPropIds[$property['CODE']] = array(
'ID' => $property['ID'],
'CODE' => $property['CODE'],
'PROPERTY_TYPE' => $property['PROPERTY_TYPE'],
'USER_TYPE' => $property['USER_TYPE']
);
}
unset($property);
$needValues = array();
foreach ($elementIndex as $index)
{
if ($this->elements[$index]['IBLOCK_ID'] != $iblockId)
continue;
if ($this->elements[$index]['PRODUCT']['TYPE'] != CatalogProductTable::TYPE_SKU)
continue;
if (empty($this->elements[$index]['OFFERS']))
continue;
foreach ($this->elements[$index]['OFFERS'] as $offer)
{
foreach ($skuPropIds as $property)
{
if (isset($offer['DISPLAY_PROPERTIES'][$property['CODE']]))
{
if (!isset($needValues[$property['ID']]))
$needValues[$property['ID']] = array();
$valueId = ($property['PROPERTY_TYPE'] == IblockPropertyTable::TYPE_LIST
? $offer['DISPLAY_PROPERTIES'][$property['CODE']]['VALUE_ENUM_ID']
: $offer['DISPLAY_PROPERTIES'][$property['CODE']]['VALUE']
);
$needValues[$property['ID']][$valueId] = $valueId;
unset($valueId);
}
}
unset($property);
}
unset($offer);
}
unset($index);
if (!empty($needValues))
CIBlockPriceTools::getTreePropertyValues($skuPropList[$iblockId], $needValues);
unset($needValues);
unset($skuPropIds);
}
}
else
{
$this->arParams['PRODUCT_DISPLAY_MODE'] = 'N';
}
}
}
}
return $skuPropList;
}