Как в 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.

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

  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»] . ‘ ‘;
    }
    }
    ?>

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

Добавить комментарий

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