Добрый день, уважаемые коллеги. Я относительно недавно учусь работать c Bitrix, и столкнулся с весьма неприятной проблемой. Мне было необходимо настроить вывод подразделов модуля catalog, я сделал шаблон, который генерировал ячейки с описание подраздела, картинками, даже прикрутил к этому плагин, позволяющий развернуть и свернуть описание, сделал вывод в три колонки (стилями), и жизнь моя была прекрасна. Но в один менее прекрасный момент я заметил, что, когда я выбираю в главном меню любой раздел, выводятся не только его разделы, но и весь-весь остальной каталог, на этой же странице. Тогда я вернулся к стандартному шаблону:
[CODE]<div class="catalog-section-list"> <ul> <?echo '<pre>'.print_r($arResult["SECTION"]).'</pre>'; $CURRENT_DEPTH=$arResult["SECTION"]["DEPTH_LEVEL"]+1; foreach($arResult["SECTIONS"] as $arSection): $this->AddEditAction($arSection['ID'], $arSection['EDIT_LINK'], CIBlock::GetArrayByID($arSection["IBLOCK_ID"], "SECTION_EDIT")); $this->AddDeleteAction($arSection['ID'], $arSection['DELETE_LINK'], CIBlock::GetArrayByID($arSection["IBLOCK_ID"], "SECTION_DELETE"), array("CONFIRM" => GetMessage('CT_BCSL_ELEMENT_DELETE_CONFIRM'))); if($CURRENT_DEPTH<$arSection["DEPTH_LEVEL"]) echo "<ul>"; elseif($CURRENT_DEPTH>$arSection["DEPTH_LEVEL"]) echo str_repeat("</ul>", $CURRENT_DEPTH - $arSection["DEPTH_LEVEL"]); $CURRENT_DEPTH = $arSection["DEPTH_LEVEL"];?> <li id="<?=$this->GetEditAreaId($arSection['ID']);?>"> <a href="<?=$arSection["SECTION_PAGE_URL"]?>"> <?=$arSection["NAME"]?> <?if($arParams["COUNT_ELEMENTS"]):?> (<?=$arSection["ELEMENT_CNT"]?>) <?endif;?> </a></li> <?endforeach?> </ul> <?=($strTitle?'<br/><h2>'.$strTitle.'</h2>':'')?> [/CODE]Проблема сохранилась, но стала выглядеть, как список, что логично. Как вы можете заметить, глубина элементов, отображаемых в списке, контролируется переменной $CURRENT_DEPTH=$arResult["SECTION"]["DEPTH_LEVEL"], которая в моем случае везде равняется нулю. Чтобы понять, почему это происходит, я так же добавил строчку с print_r $arResult "SECTION", которая вывела закономерное :
[LIST][CODE]Array ( [ID] => 0 [DEPTH_LEVEL] => 0 ) /n 1[/CODE]
[/LIST]И вот как с этим быть, я не могу понять. Перерыл тонну материала по фильтрам, по сущности arResult, по методам и пр. Но пока в голове не укладывается, не могу понять, что нужно сделать конкретно в этом случае. Подскажите, пожалуйста, хотя бы дайте наводку. Я буду очень благодарен.
П.С. Почему-то скобочки кода в предпросмотре ужимают текст до одной строчки, как ни колдуй над этим. Надеюсь, это будет все же читаемо.
П.П.С. Шаблон взять за основу стандартный мебельный, кроме этого изменения особых изменений не было.
[CODE]<div class="catalog-section-list"> <ul> <?echo '<pre>'.print_r($arResult["SECTION"]).'</pre>'; $CURRENT_DEPTH=$arResult["SECTION"]["DEPTH_LEVEL"]+1; foreach($arResult["SECTIONS"] as $arSection): $this->AddEditAction($arSection['ID'], $arSection['EDIT_LINK'], CIBlock::GetArrayByID($arSection["IBLOCK_ID"], "SECTION_EDIT")); $this->AddDeleteAction($arSection['ID'], $arSection['DELETE_LINK'], CIBlock::GetArrayByID($arSection["IBLOCK_ID"], "SECTION_DELETE"), array("CONFIRM" => GetMessage('CT_BCSL_ELEMENT_DELETE_CONFIRM'))); if($CURRENT_DEPTH<$arSection["DEPTH_LEVEL"]) echo "<ul>"; elseif($CURRENT_DEPTH>$arSection["DEPTH_LEVEL"]) echo str_repeat("</ul>", $CURRENT_DEPTH - $arSection["DEPTH_LEVEL"]); $CURRENT_DEPTH = $arSection["DEPTH_LEVEL"];?> <li id="<?=$this->GetEditAreaId($arSection['ID']);?>"> <a href="<?=$arSection["SECTION_PAGE_URL"]?>"> <?=$arSection["NAME"]?> <?if($arParams["COUNT_ELEMENTS"]):?> (<?=$arSection["ELEMENT_CNT"]?>) <?endif;?> </a></li> <?endforeach?> </ul> <?=($strTitle?'<br/><h2>'.$strTitle.'</h2>':'')?> [/CODE]Проблема сохранилась, но стала выглядеть, как список, что логично. Как вы можете заметить, глубина элементов, отображаемых в списке, контролируется переменной $CURRENT_DEPTH=$arResult["SECTION"]["DEPTH_LEVEL"], которая в моем случае везде равняется нулю. Чтобы понять, почему это происходит, я так же добавил строчку с print_r $arResult "SECTION", которая вывела закономерное :
[LIST][CODE]Array ( [ID] => 0 [DEPTH_LEVEL] => 0 ) /n 1[/CODE]
[/LIST]И вот как с этим быть, я не могу понять. Перерыл тонну материала по фильтрам, по сущности arResult, по методам и пр. Но пока в голове не укладывается, не могу понять, что нужно сделать конкретно в этом случае. Подскажите, пожалуйста, хотя бы дайте наводку. Я буду очень благодарен.
П.С. Почему-то скобочки кода в предпросмотре ужимают текст до одной строчки, как ни колдуй над этим. Надеюсь, это будет все же читаемо.
П.П.С. Шаблон взять за основу стандартный мебельный, кроме этого изменения особых изменений не было.