Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Получение разделов инфоблока

00 голосов
3
Можно ли настройками фильтра сделать выборку всех подразделов одного из раздела инфоблока...

Код
CIBlockSection::GetList(array(), array("IBLOCK_ID"=>XX, "SECTION_ID"=>YY));


выбирает только те разделы у которых родительский YY, но не глубже, а нужно выбрать ВСЕ
спросил 21 Ноя, 13 от Eolin (100 баллов)

3 Ответы

00 голосов
function GetIBlockSectionChildren($arSections)
{
if (!is_array($arSections))
$arSections = array($arSections);

$dbRes = CIBlockSection::GetList(array('LEFT_MARGIN' => 'asc'), array('ID' => $arSections));

$arChildren = array();
while ($arSection = $dbRes->Fetch())
{
if ($arSection['RIGHT_MARGIN']-$arSection['LEFT_MARGIN'] > 1 && !in_array($arSection['ID'], $arChildren))
{
$dbChildren = CIBlockSection::GetList(
array('id' => 'asc'),
array(
'IBLOCK_ID' => $arSection['IBLOCK_ID'],
'>LEFT_BORDER' => $arSection['LEFT_MARGIN'],
'<RIGHT_BORDER'=>$arSection['RIGHT_MARGIN']
)
);

while ($arChild = $dbChildren->Fetch())
{
$arChildren[] = $arChild['ID'];
}
}
}

return array_unique(array_merge($arSections, $arChildren));
}
ответил 11 Янв, 14 от Incubus (580 баллов)
00 голосов
Только с форматированием кода проблемы. :D

А так выдает все ID вложенных групп. Вызов - GetIBlockSectionChildren(YY); (можно массивом)
ответил 28 Апр, 14 от Incubus (580 баллов)
00 голосов
Александр Егжанов,
Спасиб! помогло) ... жаль что одним запросом не обойтись(
ответил 24 Авг, 14 от Eolin (100 баллов)

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

0 голосов
0 ответов
0 голосов
6 ответов
0 голосов
6 ответов
0 голосов
6 ответов