Задать вопрос

Как вывести из инфоблока раздел и всё, что находится в нём?

Помогите, нужно вывести раздел из инфоблока и и ниже всё, что в нём есть, код такой

<?
$IBLOCK_ID = 2;
$arFilter = Array(
	'IBLOCK_ID' => $IBLOCK_ID, 
	'GLOBAL_ACTIVE'=>'Y');
$obSection    = CIBlockSection::GetTreeList($arFilter);
?>
<? while($arResult = $obSection->GetNext()): ?>
	<?
	$this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EDIT"));
	$this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM')));
	?>
	<div class="col-md-3">
		<h3 id="<?= $this->GetEditAreaId($arItem['ID']); ?>"><?= $arResult['NAME']; ?>55</h3>
		<?
echo '<pre>';
	print_r($arResult);
	echo '</pre>';
		?>
		<ul>
			<?
			$arFilter = array('SECTION_ID' =>  $arResult['SECTION_ID']);
			$arSelect = Array("ID", "NAME", "IBLOCK_ID", "DETAIL_PAGE_URL");
			$res = CIBlockElement::GetList(Array(), $arFilter, false, Array('nPageSize' => 50), $arSelect);
			?>
			<? while($ob = $res->GetNextElement()): ?>
			<? $arFields = $ob->GetFields(); ?>
			<li><a href="<?= $arFields['DETAIL_PAGE_URL']; ?>"><?= $arFields['NAME']; ?></a></li>
			<? endwhile; ?>
		</ul>
	</div>
<? endwhile; ?>


Но блин, что мне в этой строчке писать $arFilter = array('SECTION_ID' => $arResult['SECTION_ID']); Я не понимаю по какому полю выборку делать
  • Вопрос задан
  • 1379 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
@seftomsk Автор вопроса
То-есть, он не возвращает в массиве элемент SECTION_ID, как я понял, когда посмотрел весь массив, зато возвращает вот что [SECTION_PAGE_URL] => /services/list.php?SECTION_ID=4 и отсюда как можно 4 вытащить?
Ответ написан
Комментировать
alexyarik
@alexyarik
Битрикс разработчик
Что это за код, от куда вы его взяли, на какой странице он размещен, какой должен быть результат? Если это компонент тогда лучше залейте его архивом в Яндекс диск и дайте ссылку. Чем больше вы предоставите информации, тем больше вероятность, что ва помогут
Ответ написан
Комментировать
Жесть.
Во первых старайтесь не делать выборки в циклах, потому что нагрузка будет расти дико.
Будет меньше вопросов, если вы все же загляните в документацию.
dev.1c-bitrix.ru/api_help/iblock/classes/ciblockse... - Ваш метод. Он выполняет CIBlockSection::GetList и сортирует результат в виже дерева.
dev.1c-bitrix.ru/api_help/iblock/classes/ciblockse...
Для получения ID раздела, просто возьмите $arResult['ID'] (Это и есть ID категории)

Замените
while($ob = $res->GetNextElement())
на
while($ob = $res->GetNext())
тогда вы сразу получить ассоциативный массив $ob['NAME'] и т.д.
Удалите
$arFields = $ob->GetFields();

Этот код вообще не работает, потому что у Вас нет массива $arItem. Замените $arItem на $arResult
<?
  $this->AddEditAction($arItem['ID'], $arItem['EDIT_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_EDIT"));
  $this->AddDeleteAction($arItem['ID'], $arItem['DELETE_LINK'], CIBlock::GetArrayByID($arItem["IBLOCK_ID"], "ELEMENT_DELETE"), array("CONFIRM" => GetMessage('CT_BNL_ELEMENT_DELETE_CONFIRM')));
  ?>
<h3 id="<?= $this->GetEditAreaId($arItem['ID']); ?>">
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы