В 1C-Bitrix есть несколько способов организовать вывод только подкатегорий на сайте.
- Использование компонента "Каталог" (catalog.section) с ограничением на вывод подкатегорий.
Компонент "Каталог" позволяет выводить список разделов каталога или товаров из выбранного раздела. Для ограничения вывода только подкатегорий, необходимо задать параметр FILTER в вызове компонента. Пример использования:
<? $arFilter = array( 'IBLOCK_ID' => 1, 'SECTION_ID' => 1, 'DEPTH_LEVEL' => 2, ); $APPLICATION->IncludeComponent( 'bitrix:catalog.section', '', array( 'IBLOCK_TYPE' => 'catalog', 'IBLOCK_ID' => $arFilter['IBLOCK_ID'], 'SECTION_ID' => $arFilter['SECTION_ID'], 'SECTION_URL' => '/catalog/#SECTION_CODE#/', 'DEPTH_LEVEL' => $arFilter['DEPTH_LEVEL'], ) ); ?>
В данном примере параметр IBLOCKID указывает на ID инфоблока, в котором находятся категории. Параметр SECTIONID определяет ID родительской категории, для которой вы хотите вывести подкатегории. Параметр DEPTHLEVEL задает глубину вывода подкатегорий (в данном случае 2, что означает только подкатегории). SECTIONURL указывает на страницу подкатегории.
- Использование методов API инфоблока.
Инфоблоки в 1C-Bitrix имеют API, позволяющее работать с разделами и элементами. Для вывода только подкатегорий можно воспользоваться методом GetList класса CIBlockSection, передав в качестве параметра фильтр, который ограничит вывод подкатегорий. Пример использования:
<? $arFilter = array( 'IBLOCK_ID' => 1, 'SECTION_ID' => 1, '>DEPTH_LEVEL' => 1, '<=DEPTH_LEVEL' => 2, ); $arSelect = array( 'ID', 'NAME', 'SECTION_PAGE_URL', ); $res = CIBlockSection::GetList( array(), $arFilter, false, $arSelect ); while ($arItem = $res->GetNext()) { echo '<a href="' . $arItem['SECTION_PAGE_URL'] . '">' . $arItem['NAME'] . '</a><br>'; } ?>
В данном примере также используется фильтр по ID инфоблока (IBLOCKID) и ID родительской категории (SECTIONID). Ограничение глубины вывода подкатегорий осуществляется с помощью фильтра по полю DEPTHLEVEL. В качестве выводимых полей заданы ID, NAME и SECTIONPAGE_URL. Результат выводится в цикле while.
Оба способа позволяют организовать вывод только подкатегорий в 1C-Bitrix. Разница между ними заключается в использовании компонента или API инфоблока. Выбор подходящего способа зависит от требований конкретного проекта и уровня знаний разработчика.