Нет нет да попадется задача где надо вывести содержимое инфоблоков отсортированный по разделам. Задача на первый взгляд обычная. Но, если не иметь под рукой шпаргалку вместо того чтобы потратить 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;