Нет нет да попадется задача где надо вывести содержимое инфоблоков отсортированный по разделам. Задача на первый взгляд обычная. Но, если не иметь под рукой шпаргалку вместо того чтобы потратить 5 мин тратишь 10. А это тебе надо? Разумеется нет.
Итак, добавляем компонент bitrix.news.list
Копируем в свой шаблон, создаем файл result_modifier.php
Добавляем такой код.
Далее в шаблоне выводим.
Все.
Итак, добавляем компонент bitrix.news.list
Копируем в свой шаблон, создаем файл result_modifier.php
Добавляем такой код.
// получаем разделы $dbResSect = CIBlockSection::GetList( Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>$arParams['IBLOCK_ID']) ); //Получаем разделы и собираем в массив while($sectRes = $dbResSect->GetNext()) { $arSections[] = $sectRes; } //Собираем массив из Разделов и элементов foreach($arSections as $arSection){ foreach($arResult["ITEMS"] as $key=>$arItem){ if($arItem['IBLOCK_SECTION_ID'] == $arSection['ID']){ $arSection['ELEMENTS'][] = $arItem; } } $arElementGroups[] = $arSection; } $arResult["ITEMS"] = $arElementGroups;
Далее в шаблоне выводим.
$arItem):?>
Все.
Этот комментарий был удален автором.
ОтветитьУдалитьОптимальнее будет так:
ОтветитьУдалить$dbResSect = CIBlockSection::GetList(
Array("SORT"=>"ASC"),
Array("IBLOCK_ID"=>$arParams['IBLOCK_ID'])
);
//Получаем разделы и собираем в массив
while($sectRes = $dbResSect->GetNext())
{
$arSections[$sectRes['ID']] = $sectRes;
}
foreach($arResult["ITEMS"] as $key=>$arItem) {
$arSections[$arItem['IBLOCK_SECTION_ID']]['ITEMS'] = $arItem;
}
$arResult["SECTIONS"] = $arSections;
Получаем один цикл, вместо двойного вложенного
Тогда вот так вот. А то элементы друг друга перезаписывают
ОтветитьУдалить$dbResSect = CIBlockSection::GetList(
Array("SORT"=>"ASC"),
Array("IBLOCK_ID"=>$arParams['IBLOCK_ID'])
);
//Получаем разделы и собираем в массив
while($sectRes = $dbResSect->GetNext())
{
$arSections[$sectRes['ID']] = $sectRes;
}
foreach($arResult["ITEMS"] as $key=>$arItem) {
$arSections[$arItem['IBLOCK_SECTION_ID']]['ITEMS'][] = $arItem;
}
$arResult["SECTIONS"] = $arSections;