Очень часто на проектах возникает ситуация когда необходимо вывести разделы инфоблока с элементами в bitrix на одной страницы. Для таких целей я использую компонент bitrix:news.list. Немного кастомизировав шаблон компонента можно получить желаемый результат.
Для того чтобы вывести разделы с элементами необходимо, добавить в папку с шаблоном компонента файл result_modifier.php с содержимым:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<? $getiblock = CIBlockSection::GetList( Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>$arParams['IBLOCK_ID']) ); while($sectionwhile = $getiblock->GetNext()) { $arS[] = $sectionwhile; } foreach($arS as $arSec){ foreach($arResult["ITEMS"] as $key=>$arItem){ if($arItem['IBLOCK_SECTION_ID'] == $arSec['ID']){ $arSec['ELEMENTS'][] = $arItem; } } $arElementGroups[] = $arSec; } $arResult["ITEMS"] = $arElementGroups; ?> |
Далее немного кастомизируем сам шаблон компонента, для этого надо добавить цикл перебора раздела, а внутри него перебор элементов, с нужными нам параметрами.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<table style="width:100%;"> <?foreach($arResult["ITEMS"] as $arSectItem): //Цикл для вывода категорий?> <? if(!empty($arSecElItem['ELEMENTS'])):?> <tr><td><h3><?echo $arSectItem['NAME']?></h3></td></tr> <? if(!empty($arSectItem['ELEMENTS'])):?> <? foreach($arSectItem['ELEMENTS'] as $arItem): //цикли для элементов?> <p><?echo $arItem["NAME"]?></p> <?echo $arItem["PREVIEW_TEXT"]?> <?/*любые свойства элементов можно вывести, используйте просмотр массива*/?> <? endforeach ?> <? endif ?> <? endif ?> <?endforeach;?> </table> <?if($arParams["DISPLAY_BOTTOM_PAGER"]):?> <br /><?=$arResult["NAV_STRING"]?> <?endif;?> |
Вот таким вот простым способом можно вывести разделы инфоблока с элементами bitrix со свойствами обычным компонентом bitrix:news.list
Разделы инфоблока с их ID
Элементы раздела инфоблока со свойством типа файл, файл которого открывается по ссылки, очень удобно использовать для вложенных файлов, например для договоров, которые публикуются на сайте