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

Вывод левого меню из каталога

00 голосов
2
Суть вопроса вот в чём. Сделал вывод меню, категорий каталога, таким образом:
В шаблоне сайта:
Код
<? $APPLICATION->IncludeComponent("bitrix:menu", "lmenu_prod", Array(
   "ROOT_MENU_TYPE"   =>   "mleft",
   "MAX_LEVEL"   =>   "1",
   "CHILD_MENU_TYPE"   =>   "msleft",
   "USE_EXT"   =>   "Y"
   )
);?>

В шаблоне самого меню (lmenu_prod):
Код
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
<? if (!empty($arResult)):?>

<? $parentsMap = array(); ?> 
<div class="leftmenu">

<? $previousLevel = 0;
foreach($arResult as $arItem):
$tmp = split('SECTION_ID=',$arItem["LINK"]);
$thisID = $tmp[1];
if ($previousLevel < $arItem["DEPTH_LEVEL"]) {$parentsMap[$thisID]=$previousID;}
elseif ($previousLevel == $arItem["DEPTH_LEVEL"]) {
$parentsMap[$thisID]=$parentsMap[$previousID];}
else {
$diff = $previousLevel - $arItem["DEPTH_LEVEL"];
$i=0;
$prevParent = $parentsMap[$previousID];
while ($i<$diff) { 
$prevParent = $parentsMap[$prevParent];
$i++;}
$parentsMap[$thisID] = $prevParent;
}?>
<? if ($arItem["IS_PARENT"]) $parentID = $thisID;?>
<? if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?>
<?=str_repeat("<br>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?>
<? endif?>
<? if ($arItem["IS_PARENT"]):
if (!($arItem["SELECTED"])):?>

<? else:?>

<? endif?>
<img src="/upload/0999.gif" width="10" height="9" border="0">
<a class="leftmenu" href="<?=$arItem["LINK"];?>"><?=$arItem["TEXT"]?></a>
<? endif?>

<? if ($GLOBALS["SECTION_ID"]==$thisID):?>
<? $cPar = $thisID; $que = array();?>
<? while ($parentsMap[$cPar]) {
$cPar=$parentsMap[$cPar]; 
$que[]=$cPar;
}
$que = array_reverse($que);
foreach ($que as $elm) {?>
<script>OpenMenuNode(document.getElementById("FLD<?=$elm;?>"));</script>
<?}?>
<? endif?>
<? $previousLevel = $arItem["DEPTH_LEVEL"];?>
<? $previousID = $thisID;?>
<? endforeach?>
<? if ($previousLevel > 1):?>
<?=str_repeat("</ul></li>", ($previousLevel-1) );?>

    </div>
<span style="padding-left:10;"><? endif?>
<? endif?></span>

Проблема заключается в том что если категория каталога в себе не содержит подкатегорий то она не выводится. Т.е. такой вариант:
1.Телвизоры
1.1.Телевизоры 14
1.2.Телевизоры 21
1.3.Телевизоры 26

2.DVD

3.Бытовая техника
3.1.Микроволновые печи
3.2.Соковыжималки
3.3.Пылесосы


То выводятся только 2 ссылки «Телевизоры» и «Бытовая техника» а DVD игнорируется.

Задача: Сделать вывод меню таким образом чтобы отображались категории не имеющие подкатегорий. Меню простое без раскрывающегося списка и т.д. просто список категорий.
При клике на категорию (имеющею подкатегории) на сайте выводятся подкатегории, а при клике на категорию (не имеющею подкатегории) на сайте выводятся товары!
спросил 30 Апр, 14 от DARK (220 баллов)

2 Ответы

00 голосов
эадачу сами себе поставили?
ответил 20 Дек, 14 от MAZDA (120 баллов)
00 голосов
Просто нуждаюсь в совете. Как можно это организовать!?
ответил 10 Апр, 15 от DARK (220 баллов)

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

0 голосов
1 ответ
спросил 09 Ноя, 13 от Stamal (120 баллов)
0 голосов
2 ответов
спросил 09 Ноя, 13 от Fierce88 (440 баллов)
0 голосов
1 ответ
спросил 16 Авг, 13 от Fierce88 (440 баллов)
0 голосов
4 ответов
спросил 17 Янв, 14 от Lata (220 баллов)
0 голосов
1 ответ