Разработка на 1С-Битрикс Михаил Базаров
Блог-note

Ссылка и название раздела в списке новостей Битрикс

Просмотров: 16431
Если нужно вывести название раздела инфоблока в котором находится конкретный элемент/новость в компоненте "списк новостей" Битрикс, и ссылку на этот раздел на сайте. Можно воспользоваться массивом $arItem.

У компонента news.detail есть массив $arResult, в котором уже лежит IBLOCK_SECTION_ID текущего элемента. Осталось получить по нему название и символьный код раздела.

В result_modifier.php шаблона

<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die();
/** @var array $arResult */
$sectionId = (int)$arResult["IBLOCK_SECTION_ID"];
if ($sectionId > 0) {
    $rsSection = CIBlockSection::GetList(
        [],
        ["ID" => $sectionId],
        false,
        ["ID", "NAME", "CODE", "IBLOCK_SECTION_ID"]
    );
    if ($section = $rsSection->GetNext()) {
        $arResult["SECTION_NAME"] = $section["NAME"];
        $arResult["SECTION_CODE"] = $section["CODE"];
        // Собираем URL раздела
        $arResult["SECTION_URL"] = !empty($section["CODE"])
            ? $arResult["SECTION_URL"] // если уже есть в компоненте
            : "/content/?SECTION_ID=" . $sectionId; // fallback
    }
}

В template.php шаблона

<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) die(); ?>
<?php if ($arResult["SECTION_NAME"]): ?>
    Раздел: <a href="<?= $arResult["SECTION_URL"] ?>"><?= $arResult["SECTION_NAME"] ?></a>
<?php endif; ?>
<h1><?= $arResult["NAME"] ?></h1>

Вариант покороче — прямо в template.php

Поскольку запрос всего один (не N+1), можно и в шаблоне, но в result_modifier.php аккуратнее:

<?php
$res = CIBlockSection::GetByID($arResult["IBLOCK_SECTION_ID"]);
if ($ar_res = $res->GetNext()):
?>
    Раздел: <a href="/content/<?= $ar_res["CODE"] ?>/"><?= $ar_res["NAME"] ?></a>
<?php endif ?>

Важно

  • Если используете ЧПУ (CODE в адресе) — ссылка собирается через CODE
  • Если без ЧПУ — подставляйте ID раздела
  • Для детальной страницы N+1 не проблема (элемент один), но подготовка данных в result_modifier.php — правильная практика: шаблон остаётся тупым, логика в одном месте
Услуги

Стоимость разработки на 1С-Битрикс

Стоимость разработки сайта зависит от объёма и сложности проекта. Ниже приведены ориентировочные цены, как правило не выходят за обозначенные рамки. Срок разработки зависит от сложности проекта: как правило называю сроки с запасом.

Финальная стоимость и сроки разработки обговариваются на этапе обсуждения. Скачайте опросник на разработку, заполните как можно подробнее и вышлите удобным способом. После ознакомления смогу задать уточняющие вопросы и оценить проект.

Включено в стоимость разработки

В цену уже заложено всё, что нужно для легального и быстрого запуска. Доплачивать за базовые вещи не придётся.

  • Лицензия и модули

    Лицензия на «1С-Битрикс» нужной редакции, дополнительные модули и видео-инструкции по работе с готовым проектом.

  • Скорость и SEO

    Оптимизация кода и сервера под быструю загрузку, базовая SEO-оптимизация и добавление сайта в поисковые системы.

Блог-note

Заметки по 1С-Битрикс