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

Выпадающее меню из разделов и названий елементов

00 голосов
3
Добрый день всем.
Столкнулся с такой проблемой - необходимо сделать выпадающее меню верхним пунктом которого будут названия разделов, допустим "А", "B", "C".    а вторым (выпадающим) будут ссылки на елементы разделов
В каждом разделе имеются несколько елементов вида A1, A2, A3.. .(B1, B2...)
добавил шаблон горизонтального меню , вывел в нем
(тип меню .bottom.menu)

Код
<? 
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); 
global $APPLICATION; 
$aMenuLinksExt=$APPLICATION->IncludeComponent("bitrix:menu.sections", "", array(
   "IS_SEF" => "N",
   "ID" => $_REQUEST["ID"],
   "IBLOCK_TYPE" => "books",
   "IBLOCK_ID" => "32",
   "SECTION_URL" => "/catalog/authors/section_list.php?SECTION_ID=#ID#",
   "DEPTH_LEVEL" => "4",
   "CACHE_TYPE" => "A",
   "CACHE_TIME" => "3600"
   ),
   false
); 
$aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks); 
?>


Но такой код выводит только папки, а елементы не выводятся. Для вывода ТОЛЬКО елементов БЕЗ РАЗДЕЛОВ имеется следующий код
(Пробовал создавать .bottom.menu_ext   туда пихать код что ниже но меню не работает как надо. )

Код
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

global $APPLICATION;

    if(CModule::IncludeModule("iblock"))
        {

$IBLOCK_ID = 32;        // указываем из акого инфоблока берем элементы

$arOrder = Array("NAME"=>"ASC");    // сортируем по свойству SORT по возрастанию
$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();            // берем поля
//        echo $arFields['NAME']." - arFields['NAME']<br>";
/*        echo '<pre>';
        print_r($arFields);        // 
        echo '</pre>';        */

    // начинаем наполнять массив aMenuLinksExt нужными данными
    $aMenuLinksExt[] = Array(
                $arFields['NAME'],
                $arFields['DETAIL_PAGE_URL'],
                Array(),
                Array(),
                ""
                );
    
    }        //     while($ob = $res->GetNextElement())
    
        }    //     if(CModule::IncludeModule("iblock"))

/*    echo "<br>Массив <b>aMenuLinksExt</b> - дополнительный";
    echo '<pre>';
    print_r($aMenuLinksExt);    
    echo '</pre>';            */

 $aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks);
// $aMenuLinks = array_merge($aMenuLinks);

?>


Подскажите пожалуйста где ковырять что поправить и реализовать вывод елементов в выпадающем меню?
Или как обьединить эти приведеные выше коды в один целый рабочий?
P.s. Читал menu tutorial там информации необходимой не обнаружено
спросил 05 Ноя, 13 от wokmon300 (180 баллов)

3 Ответы

00 голосов
Перепробовал многие методы предложеные на форуме - выводит или название разделов или чисто елементы инфоблока (БЕЗ разделов).
А как вывести на 1-м уровне - НАЗВАНИЯ РАЗДЕЛОВ а на 2-м выпадающем - названия елементов?
ответил 12 Дек, 13 от wokmon300 (180 баллов)
00 голосов
Для решения задачи есть готовый компонент.
ответил 26 Март, 14 от Siemka (1,020 баллов)
00 голосов
может кому=то пригодится решение
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();

global $APPLICATION;

if(CModule::IncludeModule("iblock"))
{

$IBLOCK_ID = 32; // указываем из акого инфоблока берем элементы

$arOrder = Array("NAME"=>"ASC"); // сортируем по свойству SORT по возрастанию
$arSelect = Array("ID", "NAME", "IBLOCK_ID", "DETAIL_PAGE_URL");
$arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE"=>"Y", "PROPERTY_razdel"=> $_REQUEST["SECTION_ID"]);
$res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect);

while($ob = $res->GetNextElement())
{
$arFields = $ob->GetFields(); // берем поля
// echo $arFields['NAME']." - arFields['NAME']<br>";
/* echo '<pre>';
print_r($arFields); //
echo '</pre>'; */

// начинаем наполнять массив aMenuLinksExt нужными данными
$aMenuLinksExt[] = Array(
$arFields['NAME'],
$arFields['DETAIL_PAGE_URL'],
Array(),
Array(),
""
);

} // while($ob = $res->GetNextElement())

} // if(CModule::IncludeModule("iblock"))

/* echo "<br>Массив aMenuLinksExt - дополнительный";
echo '<pre>';
print_r($aMenuLinksExt);
echo '</pre>'; */

$aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks);
// $aMenuLinks = array_merge($aMenuLinks);

?>
ответил 19 Июль, 14 от wokmon300 (180 баллов)

Похожие вопросы

0 голосов
3 ответов
спросил 24 Фев, 14 от salo (840 баллов)
0 голосов
1 ответ
0 голосов
4 ответов
спросил 28 Ноя, 13 от Sturmwind (300 баллов)
0 голосов
3 ответов
0 голосов
7 ответов