Помогите пожалуйста решить некоторые проблемы в шаблоне меню. Я написал шаблон вывода меню (правда немного кривовато ) . Суть у меня такая есть пользовательское поле категории для проверки выводить пункт меню или нет. Проблема состоит в том что если я не вывожу родительский пункт меню, то его под категории выводятся в предыдущем пункте меню. Как решить эту проблему??? Помогите плз.
Я себе представляю это так. Сделать проверку если родительский эл. не выводится то не выводить его дочерние, но моих знаний в пхп не достаточно.
А вот и сам код (Не ругайте только когда увидите )
Я себе представляю это так. Сделать проверку если родительский эл. не выводится то не выводить его дочерние, но моих знаний в пхп не достаточно.
А вот и сам код (Не ругайте только когда увидите )
Код |
---|
<? if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? if(CModule::IncludeModule("iblock")){ $ar_result=CIBlockSection::GetList(Array("SORT"=>"ASC"), Array("IBLOCK_ID"=>"3"), false, Array("UF_*","SECTION_PAGE_URL")); while($res=$ar_result->GetNext()){ $arr[$res["SECTION_PAGE_URL"]] = $res["UF_MAIN_MENU"];} } ?> <div class="nav-sub"> <? if (!empty($arResult)):?> <ul> <? $previousLevel = 0; $arIt = Array(); global $arIt; static $ii=-1; foreach($arResult as $arItem):?> <? foreach ($arr as $key => $val): if ($key==$arItem["LINK"]): if ($val!=1):?> <? if ($arItem["DEPTH_LEVEL"] =="1"){ $arIt[] = $arItem; $ii++;} if($arItem["DEPTH_LEVEL"] =="2"){$arIt[$ii]["LIST_S"][] = $arItem;} ?> <? if ($previousLevel && $arItem["DEPTH_LEVEL"] < $previousLevel):?> <?=str_repeat("</ul></li>", ($previousLevel - $arItem["DEPTH_LEVEL"]));?> <? endif?> <? if ($arItem["IS_PARENT"]):?> <? if ($arItem["DEPTH_LEVEL"] == 1):?> <li><a href="<?=$arItem["LINK"]?>" class="<? if ($arItem["SELECTED"]):?>root-item-selected<? else:?>root-item<? endif?>"><?=$arItem["TEXT"]?></a> <ul> <? else:?> <li<? if ($arItem["SELECTED"]):?> class="item-selected"<? endif?>><a href="<?=$arItem["LINK"]?>" ><?=$arItem["TEXT"]?></a> <ul> <? endif?> <? else:?> <? if ($arItem["PERMISSION"] > "D"):?> <? if ($arItem["DEPTH_LEVEL"] == 1):?> <li><a href="<?=$arItem["LINK"]?>" class="<? if ($arItem["SELECTED"]):?>root-item-selected<? else:?>root-item<? endif?>"><?=$arItem["TEXT"]?></a></li> <? else:?> <? if($arItem["DEPTH_LEVEL"] != "3" && $val!="N"):?><li<? if ($arItem["SELECTED"]):?> class="item-selected"<? endif?>><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li><?endif?> <? endif?> <? else:?> <? if ($arItem["DEPTH_LEVEL"] == 1):?> <li><a href="" class="<? if ($arItem["SELECTED"]):?>root-item-selected<? else:?>root-item<? endif?>" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li> <? else:?> <li><a href="" class="denied" title="<?=GetMessage("MENU_ITEM_ACCESS_DENIED")?>"><?=$arItem["TEXT"]?></a></li> <? endif?> <? endif?> <? endif?> <? $previousLevel = $arItem["DEPTH_LEVEL"];?> <? endif;?> <? endif;?> <? endforeach;?> <? endforeach?> <? if ($previousLevel > 1)://close last item tags?> <?=str_repeat("</ul></li>", ($previousLevel-1) );?> <? endif?> <?foreach($arResult as $itemIdex => $arItem):?> <? if ($arItem["ITEM_TYPE"] == "P"):?> <li<?if ($itemIdex == $lastSelectedIndex):?> class="current"<?endif;?>><a href="<?=$arItem["LINK"]?>"><?=$arItem["TEXT"]?></a></li> <? endif ?> <?endforeach;?> </ul> </div> <div class="menu-clear-left"></div> <? endif?> |