Жесть.
Во первых старайтесь не делать выборки в циклах, потому что нагрузка будет расти дико.
Будет меньше вопросов, если вы все же загляните в документацию.
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']); ?>">