Суть вопроса вот в чём. Сделал вывод меню, категорий каталога, таким образом:
В шаблоне сайта:
В шаблоне самого меню (lmenu_prod):
Проблема заключается в том что если категория каталога в себе не содержит подкатегорий то она не выводится. Т.е. такой вариант:
1.Телвизоры
1.1.Телевизоры 14
1.2.Телевизоры 21
1.3.Телевизоры 26
2.DVD
3.Бытовая техника
3.1.Микроволновые печи
3.2.Соковыжималки
3.3.Пылесосы
То выводятся только 2 ссылки «Телевизоры» и «Бытовая техника» а DVD игнорируется.
Задача: Сделать вывод меню таким образом чтобы отображались категории не имеющие подкатегорий. Меню простое без раскрывающегося списка и т.д. просто список категорий.
При клике на категорию (имеющею подкатегории) на сайте выводятся подкатегории, а при клике на категорию (не имеющею подкатегории) на сайте выводятся товары!
В шаблоне сайта:
Код |
---|
<? $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 игнорируется.
Задача: Сделать вывод меню таким образом чтобы отображались категории не имеющие подкатегорий. Меню простое без раскрывающегося списка и т.д. просто список категорий.
При клике на категорию (имеющею подкатегории) на сайте выводятся подкатегории, а при клике на категорию (не имеющею подкатегории) на сайте выводятся товары!