Как можно получить значение ['DEPTH_LEVEL'] равное 1 из пути, полученного с помощью функции CIBlockSection::GetNavChain?
Чтобы получить корневой раздел элемента инфоблока в Битриксе, можно воспользоваться функцией CIBlockSection::GetNavChain, а затем из полученного пути выбрать первый элемент. Вот пример кода: ```php $sectionId = 10; // ID раздела, для которого нужно получить корневой раздел $navChain = CIBlockSection::GetNavChain(false, $sectionId); $rootSection = $navChain->Fetch(); $rootSectionId = $rootSection['ID']; $rootSectionDepth = $rootSection['DEPTH_LEVEL']; echo "Корневой раздел ID: " . $rootSectionId . ", глубина: " . $rootSectionDepth; ``` В данном примере мы передаем ID раздела в функцию GetNavChain и получаем объект CDBResult. Затем с помощью метода Fetch выбираем первый элемент из пути, который представляет корневой раздел. Затем мы можем получить значение его ID и глубины. Важно отметить, что если у раздела нет подразделов, то его ID и глубина будут совпадать с показателями ['DEPTH_LEVEL'], возвращаемыми при использовании функции CIBlockSection::GetList без дополнительных фильтров.
$select = [
"IBLOCK_ID",
"SECTION_ID" => "ID",
"SECTION_NAME" => "NAME",
"PARENT_ID" => "ROOT_SECTION.ID",
"PARENT_NAME" => "ROOT_SECTION.NAME",
];
$iblockId = 12;
$sections = [437, 494, 482];
$entity = \Bitrix\Iblock\Model\Section::compileEntityByIblock($iblockId);
$dbNavChain = $entity::getList([
"select" => $select,
"filter" => [
"=IBLOCK_ID" => $iblockId,
"ID" => $sections,
"=ROOT_SECTION.DEPTH_LEVEL" => 1
],
'runtime' => [
'ROOT_SECTION' => [
'data_type' => $entity,
'reference' => [
'=ref.IBLOCK_ID' => new \Bitrix\Main\DB\SqlExpression('?i', $iblockId),
'>this.LEFT_MARGIN' => 'ref.LEFT_MARGIN',
' 'ref.RIGHT_MARGIN',
]
]
],
"order" => [
"ROOT_SECTION.LEFT_MARGIN" => "ASC"
],
"cache" => [
"ttl" => 86400
]
]);
$result = [];
while ($navChain = $dbNavChain->fetch()) {
$section = [
"ID" => $navChain["PARENT_ID"],
"IBLOCK_ID" => $navChain["IBLOCK_ID"],
"NAME" => $navChain["PARENT_NAME"],
];
$result[$navChain["SECTION_ID"]] = $section;
}
print_r($result);
Результат:
Array
(
[437] => Array
(
[ID] => 75
[IBLOCK_ID] => 12
[NAME] => Гель-лаки
)
[482] => Array
(
[ID] => 338
[IBLOCK_ID] => 12
[NAME] => Инструменты
)
[494] => Array
(
[ID] => 338
[IBLOCK_ID] => 12
[NAME] => Инструменты
)
)