Yandex Metrika
sanches.free 22 просмотра

Строим пункты типового меню из элементов инфоблока в 1С‑Битрикс

Идея

Стандартные меню читаются из текстовых .menu.php, но расширения позволяют подмешивать элементы данных. Разместите файл рядом с основным именем типа меню и включите галочку про *_menu_ext.php в настройках меню редактируемого раздела.

Выбор элементов активного раздела

<?php
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) {
    die();
}

global $APPLICATION;

if (\Bitrix\Main\Loader::includeModule("iblock")) {
    $iblockId = 7;
    $order = ["NAME" => "ASC"];
    $select = ["ID", "NAME", "DETAIL_PAGE_URL"];
    $filter = [
        "IBLOCK_ID" => $iblockId,
        "ACTIVE" => "Y",
        "PROPERTY_razdel" => (int)$_REQUEST["SECTION_ID"],
    ];

    $res = CIBlockElement::GetList($order, $filter, false, false, $select);
    $extra = [];
    while ($row = $res->GetNext()) {
        $extra[] = [
            htmlspecialcharsbx($row["NAME"]),
            $row["DETAIL_PAGE_URL"],
            [],
            [],
            "",
        ];
    }
    $aMenuLinks = array_merge($extra, $aMenuLinks ?? []);
}

Отладка

Проверьте сортировку, дубляж ссылок и кешируемость меню. Для производительности лучше вынести тяжёлые выборки в отложенную функцию и отключить кеш меню временно только на время отладки.

Не хотите копаться сами?

Починю за 1-3 дня. Без предоплаты — оплата по результату.

15+ лет опыта с 1С-Битрикс · Без предоплаты · 7 дней гарантии