1. Что надо понять, у битрикса находится дерево категорий. (http://s6-studio.ru/blog/105/). Переходим по ссылке и читаем, запоминаем схему.
Комментарий- у каждого значения секции есть 2 значения LEFT_MARGIN и RIGHT_MARGIN. При добавлении еще одной категории, перестраивается всё дерево. т.е у нас есть значения 11 и 22, добавили еще одну категорию , у родительского элемента стало 23 RIGHT_MARGIN а у дочернего-22, т.е right-margin изменился.
Т.е если мы тупую поиск делаем, то мы получим 1 уровень подкатегорий. А если выборка по дереву- то всё!!!.
далее сам код для выборки.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Получаем подсекцию Код $rs = CIBlockSection::GetList( array(), array('ID'=>$SECTION_ID,'IBLOCK_ID'=>$IBLOCK_ID) ); $ar = $rs->GetNext(); //2. Делаем запрос //Код $rs = CIBlockSection::GetList( array('LEFT_MARGIN'=>'ASC'), array( 'IBLOCK_ID'=>$IBLOCK_ID, '>LEFT_MARGIN'=>$ar['LEFT_MARGIN'], '<RIGHT_MARGIN'=>$ar['RIGHT_MARGIN'], ) ); |