### ВЫВОД РАЗДЕЛОВ И ЭЛЕМЕНТОВ В bitrix:news.list Часто возникает необходимость вывести разделы инфоблока с элементами на одной странице. Для этой цели подойдет связка __catalog.sections + news.list__. Или можно обойтись одним __bitrix:news.list__, немного кастомизировав шаблон компонента. Пойдем вторым путем. Итак. 1. Размещаем компонент bitrix:news.list на целевой странице. 2. Копируем шаблон компонента в текущий шаблон сайта. 3. Создаем в нем файл result_modifier.php с таким содержимым. ```php // Получаем все активные разделы ИБ $rsSections = CIBlockSection::GetList( Array("SORT" => "ASC"), Array( "=IBLOCK_ID" => $arParams["IBLOCK_ID"], "=ACTIVE" => "Y" ) ); // Собираем разделы в массив while ($arSection = $rsSections->GetNext()) $arSections[] = $arSection; // Фильтруем элементы по принадлежности к разделу // Получаем итоговый массив со структурой: [SECTION] => [ELEMENTS] foreach ($arSections as $arSection){ foreach ($arResult["ITEMS"] as $arItem){ if ($arItem["IBLOCK_SECTION_ID"] == $arSection["ID"]) $arSection["ELEMENTS"][] = $arItem; } $arElementGroups[] = $arSection; } $arResult["ITEMS"] = $arElementGroups; ``` В итоге получаем такую структуру: ```php Array ( // Разделы [0] => Array ( [ID] => 17 [NAME] => Юридические вопросы [CODE] => yuridicheskie-voprosy [SECTION_PAGE_URL] => /faq/yuridicheskie-voprosy/ [ELEMENTS] => Array ( // Элементы [0] => Array [1] => Array [2] => Array ) ) [1] => Array [2] => Array ... ) ``` В template.php выводим так: ```php

``` > Не нравится мне имя ключа $arResult["ITEMS"], напрашивается "SECTIONS", но пока оставлю, как есть. --- Однако есть вариант лучше, который избавит нас от вложенного foreach. ```php $rsSections = CIBlockSection::GetList( Array("SORT" => "ASC"), Array( "=IBLOCK_ID" => $arParams['IBLOCK_ID'], "=ACTIVE" => "Y" ) ); // Тут вместо инкрементного индекса, ID раздела while ($arSection = $rsSections->GetNext()) $arSections[$arSection['ID']] = $arSection; // По нему производим неявную фильрацию foreach($arResult["ITEMS"] as $arItem) { $arSections[$arItem['IBLOCK_SECTION_ID']]['ITEMS'][] = $arItem; } $arResult["SECTIONS"] = $arSections; ``` Получаем струтуру вида: ```php Array ( // Разделы [18] => Array ( [ID] => 18 [NAME] => Вопросы по доставка и оплате [CODE] => voprosy-po-dostavka-i-oplate [SECTION_PAGE_URL] => /faq/voprosy-po-dostavka-i-oplate/ [IBLOCK_TYPE_ID] => references [ITEMS] => Array ( // Элементы [0] => Array ( [ID] => 331 [IBLOCK_SECTION_ID] => 18 [NAME] => Как изменить номер телефона в личном кабинете? [DETAIL_PAGE_URL] => /faq/voprosy-po-dostavka-i-oplate/kak-izmenit-nomer-telefona/ ) [1] => Array [2] => Array ``` В template.php аналогичная верстка, лишь переименуем ключи $arResult. ```php

``` Итог: --- ![image](https://user-images.githubusercontent.com/24971549/145209938-4518179c-8c38-4e8e-b226-cd650958a726.png) -- Написано на основе данных постов: + http://deen812.blogspot.com/2017/10/bitrix-newslist.html + https://bxall.ru/spisok-novostej-po-razdelam-v-bitrixnews-list-razdely-infobloka-s-elementami-bitrix/