Как в 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 року займаюся веб-розробкою. Зараз я – PHP Full Stack Developer.
Обговорити ваш проект, а також дізнатися більше про мене ви можете на цьому сайті:
dev.forwww.com

Email: dmitriyribka@gmail.com

15 коментаря

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

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

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

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

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

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

  2. Добрый день! Это не работает, если элемент относится сразу к двум разделам. Нашел решение:
    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”] . ‘ ‘;
    }
    }
    ?>

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

  3. Добрый день, Дмитрий.
    Не могу понять в чем ошибка.
    С помощью 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. возможно у ваших элементов не сгенерирован символьный код

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

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

    <a href="”>

Залишити коментар до Николай Скасувати коментар