Как можно получить имя или ID раздела в Битрикс зная только SECTION_CODE?
Сначала получаем id нашего раздела. Для этого воспользуемся очень удобным, но не документированным (ох уж этот Битрикс) классом CIBlockFindTools и его методом GetSectionID. В section.php перед выводом нашего заголовка пишем:
1 2 3 4 5 |
$arResult["SECTION_ID"] = CIBlockFindTools::GetSectionID( $arResult["VARIABLES"]["SECTION_ID"], $arResult["VARIABLES"]["SECTION_CODE"], array("IBLOCK_ID" => $arParams["IBLOCK_ID"]) ); |
А зная SECTION_ID все становится стандартно и просто. Используем всеми любимый и знакомый класс CIBlockSection, который предназначен для работы с разделами информационных блоков (инфоблоков). Воспользуемся методом GetByID, который возвращает параметры раздела по его id.
1 2 |
$sResult = CIBlockSection::GetByID($arResult["SECTION_ID"]); if($sArResult = $sResult->GetNext()) |
И выводим наш заголовок
1 |
<h1><?=$sArResult['NAME'];?></h1> |
Можно вывести и не имя, а любое другое поле, например UF_TITLE =)
Значит для получения любого поля раздела инфоблока нам достаточно знать только SECTION_CODE нужного инфоблока. Данный код работает при включенном ЧПУ и уникальности символьного кода раздела.
Приведу пример для элементов инфоблока
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$arResult["ELEMENT_ID"] = CIBlockFindTools::GetElementID( $arResult["VARIABLES"]["ELEMENT_ID"], $arResult["VARIABLES"]["ELEMENT_CODE"], false, false, array( "IBLOCK_ID" => $arParams["IBLOCK_ID"], "IBLOCK_LID" => SITE_ID, "IBLOCK_ACTIVE" => "Y", "ACTIVE_DATE" => "Y", "ACTIVE" => "Y", "CHECK_PERMISSIONS" => "Y", ) ); |
А так можно получить количество подразделов в разделе
1 2 3 4 5 6 |
$arFilter = Array( "IBLOCK_ID"=>$arParams['IBLOCK_ID'], "SECTION_ID"=>$arResult["SECTION_ID"] ); echo CIBlockSection::GetCount($arFilter); |