- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/product/propertycatalogfeature.php
- Класс: BitrixCatalogProductPropertyCatalogFeature
- Вызов: PropertyCatalogFeature::getBasketPropertyByTypes
static function getBasketPropertyByTypes(array $catalog, array $parameters = []): ?array
{
$result = [];
$getCode = (isset($parameters['CODE']) && $parameters['CODE'] == 'Y');
$filter = [];
switch ($catalog['CATALOG_TYPE'])
{
case CCatalogSku::TYPE_CATALOG:
$filter = [
'=IBLOCK_ID' => $catalog['IBLOCK_ID'],
[
'LOGIC' => 'OR',
[
'=MULTIPLE' => 'Y',
'@PROPERTY_TYPE' => [
IblockPropertyTable::TYPE_ELEMENT,
IblockPropertyTable::TYPE_SECTION,
IblockPropertyTable::TYPE_LIST,
IblockPropertyTable::TYPE_NUMBER,
IblockPropertyTable::TYPE_STRING
]
],
[
'=MULTIPLE' => 'N',
'@PROPERTY_TYPE' => [
IblockPropertyTable::TYPE_ELEMENT,
IblockPropertyTable::TYPE_LIST
]
]
]
];
break;
case CCatalogSku::TYPE_PRODUCT:
case CCatalogSku::TYPE_FULL:
$filter = [
'=IBLOCK_ID' => $catalog['PRODUCT_IBLOCK_ID'],
[
'LOGIC' => 'OR',
[
'=MULTIPLE' => 'Y',
'@PROPERTY_TYPE' => [
IblockPropertyTable::TYPE_ELEMENT,
IblockPropertyTable::TYPE_SECTION,
IblockPropertyTable::TYPE_LIST,
IblockPropertyTable::TYPE_NUMBER,
IblockPropertyTable::TYPE_STRING
]
],
[
'=MULTIPLE' => 'N',
'@PROPERTY_TYPE' => [
IblockPropertyTable::TYPE_ELEMENT,
IblockPropertyTable::TYPE_LIST
]
]
]
];
break;
case CCatalogSku::TYPE_OFFERS:
$filter = [
'=IBLOCK_ID' => $catalog['IBLOCK_ID'],
'!=PROPERTY_TYPE' => IblockPropertyTable::TYPE_FILE,
'!=ID' => $catalog['SKU_PROPERTY_ID']
];
break;
}
$filter['=ACTIVE'] = 'Y';
$iterator = IblockPropertyTable::getList([
'select' => ['ID', 'CODE', 'SORT'],
'filter' => $filter,
'order' => ['SORT' => 'ASC', 'ID' => 'ASC']
]);
while ($row = $iterator->fetch())
$result[(int)$row['ID']] = self::getPropertyCode($row, $getCode);
unset($row, $iterator);
unset($filter, $getCode);
return (!empty($result) ? array_values($result) : null);
}