Получение свойств для раздела с учётом наследования
| Код |
|---|
<?php
// Получение всех свойств раздела (включая унаследованные) с детальной информацией
function getSectionPropertiesWithInheritance($iblockId, $sectionId)
{
Loader::includeModule('iblock');
$properties = [];
// Получаем привязки с наследованием
$propertyLinks = \CIBlockSectionPropertyLink::GetArray($iblockId, $sectionId);
if (empty($propertyLinks)) {
return $properties;
}
// Получаем полную информацию о свойствах
$propertyIterator = \CIBlockProperty::GetList(
[],
['IBLOCK_ID' => $iblockId, 'ID' => array_keys($propertyLinks)]
);
while ($property = $propertyIterator->Fetch()) {
$propertyId = (int)$property['ID'];
$properties[$propertyId] = [
'PROPERTY_INFO' => $property,
'LINK_INFO' => $propertyLinks[$propertyId],
'IS_INHERITED' => isset($propertyLinks[$propertyId]['INHERITED'])
&& $propertyLinks[$propertyId]['INHERITED'] === 'Y'
];
}
return $properties;
}
// Использование:
$sectionProperties = getSectionPropertiesWithInheritance(10, 123);
foreach ($sectionProperties as $propertyId => $data) {
$property = $data['PROPERTY_INFO'];
$link = $data['LINK_INFO'];
$isInherited = $data['IS_INHERITED'];
echo "{$property['NAME']} - в фильтре: {$link['SMART_FILTER']}";
if ($isInherited) {
echo " (унаследовано)";
}
echo "\n";
} |