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

меню меню и еще раз меню

00 голосов
8
Сидел в форуме часа 3.
Есть много подобных тем.Но все же вопрос не исчерпался.
У меня есть каталог товаров.
Мне надо из него сделать меню(вложенность 3-4)типа дерева
Использовал и bitrix:menu.section
но выводится пустая страница.
Может еще что нибуть надо где то прописать?Может эти компоненты не сами находит каталог и строят из него меню.
Очень нужна помощь.Вопрос жизни и зарплаты.
спросил 20 Июнь, 13 от Fierce88 (440 баллов)

8 Ответы

00 голосов
Цитата
омен пишет:
bitrix:menu.section

Он только формирует массив ссылок. За вывод отвечает bitrix:menu.
Короче, bitrix:menu.section в _ext-файл (что за зверь, смотрите в доке). В настройках bitrix:menu укажите "брать и из ext-файлов".
ответил 20 Июнь, 13 от Pomnep (13,960 баллов)
00 голосов
Цитата
Евгений Жуков пишет:
Цитата омен пишет:
bitrix:menu.section
Он только формирует массив ссылок. За вывод отвечает bitrix:menu.
Короче, bitrix:menu.section в _ext-файл (что за зверь, смотрите в доке). В настройках bitrix:menu укажите "брать и из ext-файлов".

Можно поподробнейа то я что то не совсем понимаю о чем идет речь. Мне бы алгоритм действий показать , либо на примере показать. Очень буду признателен.
ответил 10 Июль, 13 от Fierce88 (440 баллов)
00 голосов
Цитата
омен пишет:
Можно поподробнейа то я что то не совсем понимаю о чем идет речь.


.left.menu_ext.php, лежащий в соответствующей директории:

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

global $APPLICATION,$USED_CACHE_TIME;
if (strpos(strtolower($APPLICATION->GetCurUri()),"/articles/") === false)
 return;
?>

<?
$aMenuLinksExt = $APPLICATION->IncludeComponent("bitrix:menu.sections","",array(
                                                                                  "IS_SEF"   =>   "N",
                                                                                  "ID"   =>   $_REQUEST["ID"],
                                                                                  "IBLOCK_TYPE"   =>   "publications",
                                                                                  "IBLOCK_ID"   =>   "7",
                                                                                    "SECTION_URL" => "#SITE_DIR#publications/articles/",
                                                                                  "DEPTH_LEVEL"   =>   "1",
                                                                                  "CACHE_TYPE"   =>   "A",
                                                                                  "CACHE_TIME"   =>   $USED_CACHE_TIME
                                                                                 )
                                               );
?>

<?
// обратная сортировка, формирование ссылок и параметра
$count = count($aMenuLinksExt);
for ($i = 0; $i < $count; $i++):
 $j = $count-$i-1;
 $aMenuLinksNew[$i][0] = $aMenuLinksExt[$j][0];
 $aMenuLinksNew[$i][1] = $aMenuLinksExt[$j][1].$aMenuLinksExt[$j][0]."/";
 $aMenuLinksNew[$i][2] = array($aMenuLinksNew[$i][1]."index.php");
 $aMenuLinksNew[$i][3] = array(
                               "ARTICLES" => "Y"
                              );
 $aMenuLinksNew[$i][4] = "";
endfor;

// собираем полный массив для меню
$aMenuLinks = array_merge($aMenuLinks,$aMenuLinksNew);



Где-то так... Доки - великая вещь!
ответил 14 Окт, 13 от Jackie (380 баллов)
00 голосов
можно поподробней ,что значит в ссответствующей директории? у меня мен должно выводиться на всех страницах
ответил 15 Янв, 14 от Fierce88 (440 баллов)
00 голосов
Для вывода используйте bitrix:menu там, где нужен вывод. Например, в хидере:

Код
$APPLICATION->IncludeComponent("bitrix:menu","vertical_multilevel",array(
                                                                           "ROOT_MENU_TYPE" => "top",
                                                                             "MAX_LEVEL" => "4",
                                                                             "CHILD_MENU_TYPE" => "left",
                                                                             "USE_EXT" => "Y"
                                                                          )
                              );


Обратите внимание на "USE_EXT" => "Y". Ключевым во всем этом является массив $aMenuLinks.

P.S.
Впрочем, об это уже сказали раньше.

P.P.S.
Как это пояснить еще подробнее - я не знаю. Примеры рабочие, с моего сайта.
ответил 03 Май, 14 от Jackie (380 баллов)
00 голосов
Код
$APPLICATION->IncludeComponent(   "bitrix:menu",   
         ".default",   
         Array(   "ROOT_MENU_TYPE" => "left", 
      "MAX_LEVEL" => "4",    
           "CHILD_MENU_TYPE" => "left", 
           "USE_EXT" => "Y"    ));   

Это я прописал.
В папку где уменя лежит индекс .пхп закинул файл с мануала подправленный под себя

Код
<?// пример файла .left.menu_ext.phpif(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();global $APPLICATION;$aMenuLinksExt = $APPLICATION->IncludeComponent(   "bitrix:menu.sections",   "",   Array(      "ID" => $_REQUEST["ELEMENT_ID"],       "IBLOCK_TYPE" => "xml_catalog",       "IBLOCK_ID" => "42",       "SECTION_URL" => "/e-store/books/index.php?SECTION_ID=#ID#",       "CACHE_TIME" => "3600"    ));$aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt);?>

а он мне выводит


Код
1
2
3
4
5
Acer
Fujitsu-Siemens
Samsung
Sony
Аксессуары

непонятно откуда цифры
И кстати он выводит мне только то что лежит в первой категории он не выводит весь инфо блок, я понимаю что я задал в bitrix:menu.section "IBLOCK_ID" => "42" а как сделать так чтобы он выцводил со всех каталогов?
Заранее благодарю
ответил 29 Авг, 14 от Fierce88 (440 баллов)
00 голосов
Вставил в left.menu_ext.php ваш код. выводится вообще пустая страница. и еще я удали файл left.meu.php.
ответил 04 Янв, 15 от Fierce88 (440 баллов)
00 голосов
АУ Виктор помогите еще чуть чуть
У меня вывелось меню но только меню самого сайта а не катаог товара.
ответил 22 Апр, 15 от Fierce88 (440 баллов)

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

0 голосов
7 ответов
спросил 27 Июль, 13 от Kania (5,180 баллов)
0 голосов
4 ответов
спросил 19 Дек, 13 от maxdj (480 баллов)
0 голосов
3 ответов
спросил 14 Окт, 13 от Manakus (160 баллов)
0 голосов
7 ответов
0 голосов
1 ответ
спросил 03 Май, 13 от Kania (5,180 баллов)