/**
* @var int ИД элемента ИБ для поиска его родительской секции
*/
$elementId = 676;
var_dump(getRootSectionIdForElementById( $elementId ));
/**
* Возвращает ID раздела первого уровня относительно первичного раздела
* @param integer $elementId
* @return integer
*/
function getRootSectionIdForElementById( $elementId )
{
if ( !\Bitrix\Main\Loader::IncludeModule('iblock') )
{
return 0;
}
$element = \Bitrix\Iblock\ElementTable::getRow([
'select' => ['ID','IBLOCK_ID', 'IBLOCK_SECTION_ID'],
'filter' => [
'=ID' => $elementId
],
]);
if ( !$element || !$element['IBLOCK_SECTION_ID'] )
{
return 0;
}
$currentElementSection = \Bitrix\Iblock\SectionTable::getRow([
'select' => ['ID', 'LEFT_MARGIN', 'RIGHT_MARGIN', 'DEPTH_LEVEL'],
'filter' => [
'=IBLOCK_ID' => $element['IBLOCK_ID'],
'=ID' => $element['IBLOCK_SECTION_ID']
]
]);
if ( !$currentElementSection )
{
return 0;
}
if ( $currentElementSection['DEPTH_LEVEL'] == 1 )
{
return $currentElementSection['ID'];
}
$rootSection = \Bitrix\Iblock\SectionTable::getRow([
'select' => ['ID'],
'filter' => [
'=IBLOCK_ID' => $element['IBLOCK_ID'],
'<LEFT_MARGIN' => $currentElementSection['LEFT_MARGIN'],
'>RIGHT_MARGIN' => $currentElementSection['RIGHT_MARGIN'],
'=DEPTH_LEVEL' => 1
]
]);
return $rootSection['ID'];
}
Как получить ID и символьный код текущего раздела,
Иначе он не выводит ничего.
Коробка?