Как вывести все элементы определенного раздела в битрикс 1с?
Доброе утро. Я только начинаю работать с битриксом 1с и у меня возникла проблема. М не нужно вывести 3 раздела и к каждому разделу добавить все его элементы:
Раздел 1
- Элемент1 раздела 1
- Элемент2 раздела 1
- Элемент3 раздела 1
Раздел 2
- Элемент1 раздела 2
- Элемент2 раздела 2
- Элемент3 раздела 2
Я написал следующий код:
<?
if (CModule::IncludeModule("iblock")):
$infoblock = 3;
$rs_Section = CIBlockSection::GetList(array('sort' => 'asc'), array('IBLOCK_ID' => $infoblock));
while ( $ar_Section = $rs_Section->Fetch() )
{
$ar_Resu[$ar_Section['ID']] = array(
'ID' => $ar_Section['ID'],
'NAME' => $ar_Section['NAME'],
);
}
foreach( $ar_Resu as $arItem)
{
$arFil = Array("IBLOCK_ID"=>$infoblock ,array('SECTION_ID'=>$arItem['ID']));
$arRes = CIBlockElement::GetList(Array(), $arFil, false, Array());
while ( $arr = $arRes->Fetch() )
{
$arrName=$arr["NAME"];
}
$ar_Resu[$arItem['ID']] = array(
$arrName,
);
}
echo '<pre>'; print_r($ar_Resu); '</pre>';
endif;
?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?
Следующий код выводит только последний элемент по каждому разделу. Помогите, пожалуйста, решить эту задачу.
Ответы (1 шт):
Автор решения: u_mulder
→ Ссылка
Предлагаю модифицировать код так (лишнее пропущено):
while ( $ar_Section = $rs_Section->Fetch() )
{
$ar_Resu[$ar_Section['ID']] = array(
'ID' => $ar_Section['ID'],
'NAME' => $ar_Section['NAME'],
// Добавляем сюда пустой массив элементов
'ITEMS' => [],
);
}
//....
foreach($ar_Resu as $arItem) {
$arFil = Array("IBLOCK_ID"=>$infoblock ,array('SECTION_ID'=>$arItem['ID']));
$arRes = CIBlockElement::GetList(Array(), $arFil, false, Array());
while ( $arr = $arRes->Fetch() ) {
// Берем $arr["NAME"] и добавляем его в соответствующий 'ITEMS'-массив
$ar_Resu[$arItem['ID']]['ITEMS'][] = $arr["NAME"];
}
}