| Код |
|---|
Как сделан компонент. Выбирается список разделов CIBlockSection::GetList с сортировкой 'LEFT_MARGIN' => 'ASC'. Далее в цикле для каждого раздела запрашивается список прикрепленных элементов |
Если это всё вам нужно на одной странице, то можете попробовать выбрать одним запросом сначала все секции.
Потом вторым все элементы ИБ, находящиеся или в родительском или подчинённых узлах. Всё дерево получается.
Для каждого элемента там будет указан ID секции к которой он пренадлежит если он к одной секции привязан.
Потом обойдите этот рекордсет и соберите айдишники файлов и сделайте запрос к таблице файлов.
В шаблоне уже обходите к примеру массив с секциями и одновременно выбирайте на каждой итерации из массивов ИБ и Файлов нужные элементы.
Вы главное не увлекайтесь черезмерной оптимизайией, а то получится что вот эти 3 запроса и потом развешиване результатов по ресурсам вам обойдутся дороже кучи маленьких последовательных запросов.
Думаю тут завсегдатаи ещё всякого полезного насоветуют.