Вывести подразделы разбитые на группы

Вывести подразделы родительского раздела, разбитые на группы по n в каждой, находясь в одном из его подразделов в catalog.section.list.

<?if($arResult["SECTION"]["DEPTH_LEVEL"] == 2){?>
<?$rsParentSection = CIBlockSection::GetList(array("SORT" => "ASC"), array("IBLOCK_ID" => $arResult["SECTION"]["IBLOCK_ID"], "ID" => $arResult["SECTION"]["IBLOCK_SECTION_ID"]), false, $arSelect = Array("UF_COL_NUM_SECT"));
// CIBlockSection::GetByID($arResult["SECTION"]["IBLOCK_SECTION_ID"]);
if ($arParentSection = $rsParentSection->GetNext()) {
if(!empty($arParentSection['~UF_COL_NUM_SECT'])){
$col_num_sect = $arParentSection['~UF_COL_NUM_SECT'];
} else {
$col_num_sect = 6;
}
$arFilter = array('IBLOCK_ID' => $arParentSection['IBLOCK_ID'], 'GLOBAL_ACTIVE' => 'Y', '>LEFT_MARGIN' => $arParentSection['LEFT_MARGIN'], '<RIGHT_MARGIN' => $arParentSection['RIGHT_MARGIN'], '>DEPTH_LEVEL' => $arParentSection['DEPTH_LEVEL']); // выберет потомков без учета активности
$rsSect = CIBlockSection::GetList(array('left_margin' => 'asc'), $arFilter, false, array("ID", "IBLOCK_ID", "IBLOCK_TYPE_ID", "IBLOCK_SECTION_ID", "CODE", "SECTION_ID", "NAME", "SECTION_PAGE_URL", "UF_HIDDEN_IN_SECTION"));
$rsSect_count = CIBlockSection::GetList(array('left_margin' => 'asc'), $arFilter);
echo '<ul class="sect_block">';
$index = 1;
$key = 0;
while ($arSect_count = $rsSect_count->GetNext()) {
$key++;
}
while ($arSect = $rsSect->GetNext()) { ?>
<?if($arSect["UF_HIDDEN_IN_SECTION"] != 1):?>
<li <? if ($arSect['SECTION_PAGE_URL'] == $APPLICATION->GetCurPage(false)) echo "class='active'"; ?>>
<a href="<?= $arSect["SECTION_PAGE_URL"] ?>"><?= $arSect["NAME"] ?></a>
</li>
<?endif;?>
<? if (($key != $index) && !($index++ % $col_num_sect))
echo '</ul><ul class="sect_block">';
}
echo '</ul>';
}
}?>

В данном коде происходит проверка - находимся ли мы в подразделе. Затем с помощью метода GetList получаем подразделы родителя текущего подраздела. И в зависимости от значения свойства UF_COL_NUM_SECT разбиваем эти подразделы на группы. Если свойство не заполнено, то в каждой группе будет по 6 подразделов.


bitrixone © 2024