Вопрос по смежной теме: делаю меню из
пунктов инфоблока (не разделов!). Использую файл *_ext.php со следующим кодом:
Код |
---|
<?
if(!defined("B_PROLOG_INCLUDED" || B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;
if(CModule::IncludeModule("iblock") {
$IBLOCK_ID = 3; // указываем инфоблок с элементами
$arOrder = Array("SORT"=>"DESC";
$arSelect = Array("ID", "NAME", "IBLOCK_ID", "DETAIL_PAGE_URL";
$arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE"=>"Y";
$res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect);
while($ob = $res->GetNextElement()) // наполняем массив меню пунктами меню
{
$arFields = $ob->GetFields();
$aMenuLinksExt[] = Array(
$arFields['NAME'],
$arFields['DETAIL_PAGE_URL'],
Array(),
Array(),
);
}
}
$aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks); // меню сформировано
?> |
Пункты меню выводятся, но есть одна сложность: когда я создаю тип инфоблока, то по дефолту у него в описании (первая закладка) прописывается вот такой адрес URL страницы детального просмотра:
Код |
---|
#SITE_DIR#/simple/detail.php?ID=#ELEMENT_ID# |
Так вот, пункты меню, сделанного из пунктов этого инфоблока, начинают вести внутрь самого инфоблока, только если этот адрес в настройках инфоблока поправить на:
Код |
---|
/services/#SECTION_ID#/#ELEMENT_CODE#/ |
где "services" - это название раздела, в котором выведен используемый инфоблок (выведен через компонент Новости).
Вроде бы все работает - пункты меню ведут в пункты инфоблока, компонент Новости в соответствующем разделе инфоблок обрабатывает нормально. Но мне как-то не нравится, что дефолтный адрес был изменен - я никогда не видела подобной практики и боюсь, как бы это не породило каких-то скрытых проблем в будущем. Не могли бы вы прокомментировать это явление и, если можно, посоветовать, как делать меню из пунктов инфоблока экологично и грамотно.