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 дней гарантии