Требовалось создать раскрывающиеся ссылки в активном разделе левого вертикального меню.
При чём раскрывающиеся ссылки должны были указывать на страницы с дополнительным описанием элементов.
Первоначально шаблон компонента "bitrix:menu" выглядел так.
Код |
---|
<?if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <?if (!empty($arResult)):?>
<ul class="left-menu"> <?foreach($arResult as $arItem):?> <?if($arItem["SELECTED"]):?>
<li><a class="selected" href="<?=$arItem["LINK"]?>" ><?=$arItem["TEXT"]?></a></li>
<?else:?>
<li><a href="<?=$arItem["LINK"]?>" ><?=$arItem["TEXT"]?></a></li>
<?endif?> <?endforeach?> </ul>
<?endif?> |
Пример фрагмента сведений, которыми наполнялся массив «$arResult».
[0] => Array
(
[TEXT] => Портативные генераторы BALTOSPOT
[LINK] => /catalog/index.php?SECTION_ID=224
[SELECTED] =>
[PERMISSION] => X
[ADDITIONAL_LINKS] => Array
(
)
[ITEM_TYPE] => U
[ITEM_INDEX] => 0
[PARAMS] => Array
(
)
[DEPTH_LEVEL] => 1
[IS_PARENT] =>
)
Я пошёл следующим путём.
Дополнил меню параметром «SECTION_ID» с соответствующими значениями (Пример: SECTION_ID = 224).
Создал файл "result_modifier.php" с записью "<? CModule::IncludeModule('iblock'); ?>".
(Хотя можно было поместить эту запись в файл "template.php".)
В файле "template.php" организовал выборку полей элементов, которые находятся в конкретном разделе (папке).
Посредством следующей вставки получилось достигнуть желаемого.
Вставку я поместил там, где высвечивается раздел меню в активном состоянии.
Код |
---|
<blockquote>
<?
//CModule::IncludeModule('iblock');
$arOrder = array("sort" => "asc", "timestamp_x" => "asc");
$arFilter = array("SECTION_ID" => $arItem[PARAMS][SECTION_ID]);
$res = CIBlockElement::GetList($arOrder, $arFilter);
while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields();
//print_r($arFields);
echo '<p><a href="', $arFields['DETAIL_PAGE_URL'].'&SECTION_ID='.$arItem[PARAMS][SECTION_ID], '">', $arFields['NAME'], '</a></p>';
}
?>
</blockquote> |
Считаю, что в предложенном решении есть уязвимое место. Это добавление в меню параметра «SECTION_ID».
Но как более грамотно помочь шаблону узнавать «ID» раздела, список элементов которого надо высветить?
Ведь в моём распоряжении есть только путь к этому разделу.