Как в 1С-Битрикс вывести имя раздела и ссылку на него

Зная ID раздела, в битриксе очень просто вывести его имя, а также узнать, по какой ссылке он доступен.

Ссылка формируется из настроек инфоблока. Чтобы все ваши ссылки отображались корректно, настройки внутри инфоблока и вашего компонента должны совпадать.

Для того чтобы вывести имя раздела будем использовать API Битрикса.

<?
$res = CIBlockSection::GetByID($arItem['IBLOCK_SECTION_ID']);
$ar_res = $res->GetNext();
?>
<a href="<? echo $ar_res['SECTION_PAGE_URL']; ?>"><? echo $ar_res['NAME']; ?></a>

$arItem[‘IBLOCK_SECTION_ID’] — ID раздела, имя которого мы хотим вывести
$ar_res[‘SECTION_PAGE_URL’] — ссылка на раздел
$ar_res[‘NAME’] — имя раздела

автор: Dmitriy

Занимаюсь веб-разработкой с 2011 года. Посмотреть некоторые из моих работ, а также узнать чуть больше обо мне, вы можете на forwww.ru.

- Создание сайтов на 1С-Битрикс любой сложности
- Вёрстка макетов Figma, Photoshop, Zeplin
- Поддержка проектов на Битриксе
- Разработка нового функционала для сайта
- Парсинг данных
- Выгрузка \ Загрузка файлов в формате XML, YML, XLS, XLSX, CSV, JSON
- Интеграция по API со сторонними сервисами
и многое другое

E-mail: dmitriyribka@gmail.com

13 комментария

  1. Хочу сделать возможной вывод списка новостей принадлежащих только конкретному разделу. Как это сделать?

    1. Вам нужно воспользоваться методом CIblockElement::GetList
      https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/getlist.php

      Я вкратце писал об этом, посмотрите http://forwww.com/bitrix-how-to-get-element-and-section-list/

      Во втором массиве, он же arFilter, вам нужно указать как минимум 3 параметра Array(«IBLOCK_ID» => $iblock_id, «ACTIVE» => «Y», «SECTION_ID» => $SECTION_ID), — где нужно указать id инфоблока и секции, а также указать что будем выбирать только активные элементы.

      ПС извиняюсь что ответил с задержкой, спам фильтр жёстко работает 🙂

  2. Ну вот сижу зациклился на разделах инфоблока и упорно пишу туда код раздела инфоблока, а не самого инфоблока. Поставил свой, толку мало, вижу на странице только название страницы содержание раздела инфоблока теперь не выводится.

    1. в более новых версиях битрикса есть выбор основного раздела, по которому и строится урл, плюс в настройках компонента вам нужно обязательно включить показ 404 страницы, чтобы при введении разных символов сервер отдавал 404. В настройках инфоблока, если я не путаю, можно найти выбор основного раздела

  3. Добрый день! Это не работает, если элемент относится сразу к двум разделам. Нашел решение:
    Fetch()) {
    $temp++; // Проверим, к какому количеству разделов принадлежит элемент
    }
    if ($temp == 1) { // Если элемент принадлежит только к одному разделу
    $db_old_groups = CIBlockElement::GetElementGroups($arItem[‘ID’], false);
    while($ar_group = $db_old_groups->Fetch()) {
    echo ‘Раздел: ‘ . $ar_group[«NAME»];
    }
    }
    else { // Если элемент принадлежит более чем к одному разделу
    echo ‘Разделы: ‘;
    $db_old_groups = CIBlockElement::GetElementGroups($arItem[‘ID’], false);
    while($ar_group = $db_old_groups->Fetch()) {
    echo $ar_group[«NAME»] . ‘ ‘;
    }
    }
    ?>

    … но не могу понять как сделать ссылками эти разделы.

  4. Добрый день, Дмитрий.
    Не могу понять в чем ошибка.
    С помощью GetList вывожу список папок инфоблока:
    «ASC»),
    Array(«IBLOCK_ID» => 5, «ACTIVE» => «Y»),
    false,
    Array(‘ID’, ‘NAME’, ‘CODE’, ‘SECTION_PAGE_URL’)
    );
    while($ar_fields = $my_sections->GetNext())
    {
    ?>

    <a href="»>

    При переходе на ссылку детального просмотра содержимого папки — отображается все содержимое инфоблока, плюс URL прописывается : » http://www.site.ru/kalendar/march/ «, т.е. index.php не дописывает.

    В настройках комплексого компонента news включен режим ЧПУ:
    Страница общего списка: #SECTION_CODE#/
    Страница раздела: #SECTION_CODE#/
    Страница детального просмотра: #SECTION_CODE#/#ELEMENT_CODE#/

    В настройках инфоблока прописано:
    URL страницы информационного блока: #SITE_DIR#/kalendar/
    URL страницы раздела: #SITE_DIR#/kalendar/#SECTION_CODE#/
    URL страницы детального просмотра: #SITE_DIR#/kalendar/#SECTION_CODE#/#ELEMENT_CODE#/

    Подскажите пожалуйста в чем ошибка или какую информацию почитать?

    1. ну не глядя 2 причины возможны:
      1. возможно вам нужно внутри компонента включать настроку ЧПУ и там дополнительно прописать правила формирования (проверить что они добавились в файл urlrerwite.php)
      2. возможно у ваших элементов не сгенерирован символьный код

  5. Предыдущий код не корректно отобразился — продублировала.
    «ASC»),
    Array(«IBLOCK_ID» => 5, «ACTIVE» => «Y»),
    false,
    Array(‘ID’, ‘NAME’, ‘CODE’, ‘SECTION_PAGE_URL’)
    );

    while($ar_fields = $my_sections->GetNext())
    {
    ?>

    <a href="»>

Добавить комментарий для Павел Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *