Что бы выводить элементы и разделы в месте с группировкой по разделу, в компоненте news.list
папке нашем шаблоне компонента news.list создаем файле result_modifier.php и пишем следующий код
В созданном файле result_modifier.php пишем
<?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;
?>
Для вывода в шаблоне компонента template.php делаем вывод
<table style="width:100%;">
<?foreach($arResult["ITEMS"] as $arSecElItem):?>
<? if(!empty($arSecElItem['ELEMENTS'])):?>
<tr><td><h3><?echo $arSecElItem['NAME']?></h3></td></tr>
<tr>
<td>
<? if(!empty($arSecElItem['ELEMENTS'])):?>
<table class="table">
<? foreach($arSecElItem['ELEMENTS'] as $arItem):?>
<?
if(!empty($arItem["PREVIEW_PICTURE"]["SRC"])){
$image = $arItem["PREVIEW_PICTURE"]["SRC"];
}else{
$image = SITE_TEMPLATE_PATH."/images/nophoto.png";
}
?>
<tr>
<td style="width:200px;"><a class="fancybox image" rel="group" href="<?=$image?>"><img style="width:200px;" src="<?=$image?>" alt="<?=$arItem["NAME"]?>"/></a></td>
<td>
<p><b><h4><?echo $arItem["NAME"]?></h4></b></p>
<p><?echo $arItem["PREVIEW_TEXT"]?></p>
</td>
</tr>
<? endforeach ?>
</table>
<? endif ?>
</td>
</tr>
<? endif ?>
<?endforeach;?>
</table>
<?if($arParams["DISPLAY_BOTTOM_PAGER"]):?>
<br /><?=$arResult["NAV_STRING"]?>
<?endif;?>
Битрикс: Группировка элементов по разделу (группировка новостей по разделам bitrix)