Очень часто на проектах возникает ситуация когда необходимо вывести разделы инфоблока с элементами в 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
Элементы раздела инфоблока со свойством типа файл, файл которого открывается по ссылки, очень удобно использовать для вложенных файлов, например для договоров, которые публикуются на сайте
опечатка
Почему не выводится пагинация?
Ошибка! Строку нужно заменить на