Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Создание раскрывающихся ссылок на элементы в активном разделе меню

00 голосов
1
Требовалось создать раскрывающиеся ссылки в активном разделе левого вертикального меню.
При чём раскрывающиеся ссылки должны были указывать на страницы с дополнительным описанием элементов.
Первоначально шаблон компонента "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» раздела, список элементов которого надо высветить?
Ведь в моём распоряжении есть только путь к этому разделу.
спросил 25 Июнь, 13 от Cooper (260 баллов)

1 Ответ

00 голосов
Добрый день!
Подскажите как создать ссылку внутри сайта???
Создать php файл смогла, но вот сделать также и как внутри сайта меню не смогла... Подскажите...
ответил 25 Июнь, 13 от TigerGod (140 баллов)