@black_xe

Как правильно собрать все разделы и подразделы инфоблока Bitrix?

Подскажите пожалуйста как я могу правильно собрать все разделы и подразделы инфоблока Bitrix ?
Именно чтобы они упорядоченны были с ссылками?
Я пытался это сделать через CIBlockSection::GetList но они все подряд идут без вложенности.
if(CModule::IncludeModule("iblock"))
{
    $db_res = CIBlockSection::GetList(
        array(),
        array("IBLOCK_ID" => 2),
        false,
        array('*'));
    while($section = $db_res->Fetch()) {
        echo'<pre>';var_dump($section);echo '';
    }
}
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
@black_xe Автор вопроса
Нашёл решение в документации, мне подошел вариант:
if (CModule::IncludeModule("iblock")) {
    $filter = [
        'IBLOCK_ID' => 2,
    ];
    $select = [
        'NAME',
        'SECTION_PAGE_URL',
    ];

    $dbSection = CIBlockSection::GetList(
        [
            'LEFT_MARGIN' => 'ASC',
        ],
        array_merge(
            [
                'ACTIVE' => 'Y',
                'GLOBAL_ACTIVE' => 'Y',
            ],
            is_array($filter) ? $filter : []
        ),
        false,
        array_merge(
            [
                'ID',
                'IBLOCK_SECTION_ID',
            ],
            is_array($select) ? $select : []
        )
    );
    while ($arSection = $dbSection->GetNext(true, false)) {
        $SID = $arSection['ID'];
        $PSID = (int)$arSection['IBLOCK_SECTION_ID'];
        $arLincs[$PSID]['CHILDS'][$SID] = $arSection;
        $arLincs[$SID] = &$arLincs[$PSID]['CHILDS'][$SID];
    }
    $arResult['SECTIONS'] = array_shift($arLincs);
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы