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

Многострадальное меню

00 голосов
6
Доброго времени суток. Прошу помочь, разобраться в создании меню.
Объясните "на пальцах", как можно создать меню из каталога товара вида:
Каталог товаров - название меню

Группа1
Группа2
Группа3
Группа4

и т.д....


При этом если выбираю любую группу то, в основной части сайта открываеться список подгрупп или список товаров выбранной группы.
Читал доки, но так и не допетрил что к чему.
спросил 05 Окт, 13 от DARK (220 баллов)

6 Ответы

00 голосов
Прошу помочь в данной нелепой проблеме. Начальство подгоняет, а я застопорился на этом этапе. Стоит вопрос о покупке движка "Малый Бизнес", чем быстрей я разберусь с менюшкой, тем быстрей купим smile:)
ответил 18 Окт, 13 от DARK (220 баллов)
00 голосов
Э дружище.... я тут запостил соседнию темку... примерно такого же содержания...даже схему нарисовал... и никто не отвечает...мне кажется они сами незнают...
ответил 21 Янв, 14 от Micks (180 баллов)
00 голосов
Цитата
Xarakiry xary пишет:
Э дружище.... я тут запостил соседнию темку... примерно такого же содержания...даже схему нарисовал... и никто не отвечает...мне кажется они сами незнают...



Дружище! smile:D


Да киньте на страницу компонент... в каталоги файл .left.menu.php

он зацепит все ваши вкладки... т.е подразделы

Код

<?
// пример файла .left.menu.php

$aMenuLinks = Array(
    Array(
        "Телефоны", 
        "/catalog/phone/", 
        Array("/catalog/phone/index.php", "/catalog/phone/compare.php"), 
        Array(), 
        "" 
    ),
    Array(
        "Аксессуары", 
        "/catalog/accessory/", 
        Array("/catalog/accessory/index.php"), 
        Array(), 
        "" 
    ),
    Array(
        "Только для администраторов", 
        "/catalog/admin/", 
        Array("/catalog/admin/index.php", "/catalog/admin/edit.php"), 
        Array("PARAM_1" => "Y"), 
        "\$GLOBALS["USER"]->IsAdmin()" 
    )
);
?>




И все... немного настройте компонент и все...


В доке в поиске наберите МЕНЮ
ответил 09 Май, 14 от Lekar (2,220 баллов)
00 голосов
Цитата
Да киньте на страницу компонент... в каталоги файл .left.menu.php

он зацепит все ваши вкладки... т.е подразделы

Я спрашивал на счет сложного меню, а не простого.

Цитата
В доке в поиске наберите МЕНЮ

Набрал, и там выдало множесто найденных статей, это хорошо, есть даже очень хорошая статья, но не хренашиньки там не понятно.
Вот к примеру, берем из доки:

Код
<?
// пример файла .left.menu_ext.php

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

    $CACHE_TIME = "0";
    $IBLOCK_TYPE = "catalog";   // тип инфо-блока
    $IBLOCK_ID = 22;            // ID инфо-блока
    $CACHE_TIME = 86400;        // время кэширования

    $aMenuLinksNew = array();
    $ROOT_SECTION_ID = 0;
    $CACHE_ID = __FILE__.$IBLOCK_ID;
    $obMenuCache = new CPHPCache;
    if($_GET["SECTION_ID"]>0)
        $CACHE_ADD .= "|SECTION_ID=".$_GET["SECTION_ID"];
    elseif($_GET["ID"]>0)
        $CACHE_ADD .= "|ELEMENT_ID=".$_GET["ID"];
    else
        $CACHE_ADD = "";

    // если массив закэширован то
    if($obMenuCache->InitCache($CACHE_TIME, $CACHE_ID.$CACHE_ADD, "/"))
    {
        // берем данные из кэша
        $arVars = $obMenuCache->GetVars();
        $aMenuLinksNew = $arVars["aMenuLinksNew"];
    }
    else
    {
        $CACHE_ADD = "";
        if($_GET["SECTION_ID"]>0)
        {
            $res = CIBlockSection::GetNavChain($IBLOCK_ID, $_GET["SECTION_ID"]);
            if($ar_res = $res->Fetch())
            {
                $ROOT_SECTION_ID = $ar_res["ID"];
                $CACHE_ADD = "|SECTION_ID=".$_GET["SECTION_ID"];
            }
        }
        elseif($_GET["ID"]>0)
        {
            $res = CIBlockElement::GetElementGroups($_GET["ID"]);
            if($ar_res = $res->Fetch())
            {
                $CACHE_ADD = "|ELEMENT_ID=".$_GET["ID"];
                $res = CIBlockSection::GetNavChain(
                    $IBLOCK_ID, 
                    $ar_res["IBLOCK_SECTION_ID"]
                    );
                $ar_res = $res->Fetch();
                $ROOT_SECTION_ID = $ar_res["ID"];
            }
        }

        // иначе собираем разделы
        $rsSections = GetIBlockSectionList(
            $IBLOCK_ID, 
            0, 
            array("SORT" => "ASC", "ID" => "ASC"), 
            false, 
            array("ACTIVE"=>"Y")
            );
        while ($arSection = $rsSections->Fetch())
        {
            $aMenuLinksNew[] = array(
                $arSection["NAME"],
                SITE_DIR."catalog/accessory/section.php?SECTION_ID=".$arSection["ID"],
                ($ROOT_SECTION_ID==$arSection["ID"] ? Array("/") : Array())
            );
        }
    }
    // сохраняем данные в кэше
    if($obMenuCache->StartDataCache($CACHE_TIME, $CACHE_ID.$CACHE_ADD, "/"))
    {
        $obMenuCache->EndDataCache(Array("aMenuLinksNew" => $aMenuLinksNew));
    }

    $aMenuLinks = array_merge($aMenuLinksNew, $aMenuLinks);
endif;
?>


Создал я файл ".left.menu_ext.php" с этим содержанием, поместил в папку-каталог, дальше, что нужно сделать чтобы оно заработало? Потому что просто так оно не работает.

Цитата
Э дружище.... я тут запостил соседнию темку... примерно такого же содержания...даже схему нарисовал... и никто не отвечает...мне кажется они сами незнают...

Мне почему то, сразу вспоминается отношение 1С к пользователям купившим у них их программы...
ответил 04 Сен, 14 от DARK (220 баллов)
00 голосов
в php я хорошо разбираюсь и могу свое меню нарисовать какой угодно сложности, но хотелось бы обойтись внутренними инструментами Битрикса обойтись.
ответил 11 Янв, 15 от DARK (220 баллов)
00 голосов
Посмотрите демо-сайт, который идёт с дистрибутивом.
Например, раздел /e-store/books/
Там левое меню составляется из разделов инфоблока. И настройка осуществляется стандартными средставми, не надо нигде править php-код....
ответил 27 Апр, 15 от sickmind (4,660 баллов)

Связанных вопросов не найдено