Задача: сделать вертикальное выпадающее меню, в котором родительскими пунктами были бы разделы каталога, а дочерними (то есть выпадающими) - собственно товары.
(Примечание: как вообще сделать вертикальное выпадающее меню из разделов сайта - я разобралась и сделала, к этой части документации можно меня не отсылать. Проблема возникла именно с каталогом).
Итак, меню должно находиться на главной. В корне сайта я создала меню типа "Меню подраздела" и к нему соответствующий файл ..._ext.php. А вот здесь два варианта. Я нашла в интернете два варианта кода. Так как PHP я пока особо не знаю, я их просто скопировала и посмотрела, что будет. Сами по себе они работают, но они делают не то, что мне хотелось бы.
Как мне правильно сделать?
Результат №1. При такой реализации в меню действительно появляются пункты - разделы каталога. Но из них ничего не выпадает.
Результат №2. В этом случае в меню появляется непосредственно список товаров каталога, не разбиты по разделам. Разделы не появляются, меню, соотвотственно, не выпадает.
Настройки компонента "Меню":
(Примечание: как вообще сделать вертикальное выпадающее меню из разделов сайта - я разобралась и сделала, к этой части документации можно меня не отсылать. Проблема возникла именно с каталогом).
Итак, меню должно находиться на главной. В корне сайта я создала меню типа "Меню подраздела" и к нему соответствующий файл ..._ext.php. А вот здесь два варианта. Я нашла в интернете два варианта кода. Так как PHP я пока особо не знаю, я их просто скопировала и посмотрела, что будет. Сами по себе они работают, но они делают не то, что мне хотелось бы.
Как мне правильно сделать?
Результат №1. При такой реализации в меню действительно появляются пункты - разделы каталога. Но из них ничего не выпадает.
Код |
---|
<? if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); global $APPLICATION; $aMenuLinksExt=$APPLICATION->IncludeComponent("bitrix:menu.sections", "", array( "IS_SEF" => "Y", "SEF_BASE_URL" => "/uslugi/", "SECTION_PAGE_URL" => "#SECTION_ID#/", "DETAIL_PAGE_URL" => "#SECTION_ID#/#ELEMENT_CODE#", "IBLOCK_TYPE" => "catalog_uslug", "IBLOCK_ID" => "4", "DEPTH_LEVEL" => "4", "CACHE_TYPE" => "A", "CACHE_TIME" => "36000000" ), false ); $aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks); ?> |
Результат №2. В этом случае в меню появляется непосредственно список товаров каталога, не разбиты по разделам. Разделы не появляются, меню, соотвотственно, не выпадает.
Код |
---|
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die(); global $APPLICATION; if(CModule::IncludeModule("iblock")) { $IBLOCK_ID = 4; // указываем из какого инфоблока берем элементы $arOrder = Array("NAME"=>"ASC"); // сортируем по свойству SORT по возрастанию $arSelect = Array("ID", "NAME", "IBLOCK_ID", "DETAIL_PAGE_URL"); $arFilter = Array("IBLOCK_ID"=>$IBLOCK_ID, "ACTIVE"=>"Y", "PROPERTY_razdel"=> $_REQUEST["SECTION_ID"]); $res = CIBlockElement::GetList($arOrder, $arFilter, false, false, $arSelect); while($ob = $res->GetNextElement()) { $arFields = $ob->GetFields(); // берем поля // echo $arFields['NAME']." - arFields['NAME']<br>"; /* echo '<pre>'; print_r($arFields); // echo '</pre>'; */ // начинаем наполнять массив aMenuLinksExt нужными данными $aMenuLinksExt[] = Array( $arFields['NAME'], $arFields['DETAIL_PAGE_URL'], Array(), Array(), "" ); } // while($ob = $res->GetNextElement()) } // if(CModule::IncludeModule("iblock")) /* echo "<br>Массив aMenuLinksExt - дополнительный"; echo '<pre>'; print_r($aMenuLinksExt); echo '</pre>'; */ $aMenuLinks = array_merge($aMenuLinksExt, $aMenuLinks); // $aMenuLinks = array_merge($aMenuLinks); ?> |
Настройки компонента "Меню":