Тоже стояла похожая задача. Т.е. сделать(или переделать) меню(именно меню,а не компонента "Структура разделов" ) ,типа "left".Это меню,как мы знаем,которое выводит разделы нашей продукции.Обычно оно в хедере и выводится на всех страницах.Почему я не использовала компоненту "структура разделов",поскольку при клике на раздел мы переходили в раздел,но в этом разделе у нас компонента менялась,и там уже отображались разделы нашего раздела=)).А нам нужно,чтоб при выборе одно из пункта меню мы переходит в раздел той или иной продукции,и в меню отображались разделы.
Первое что вам нужно сделать это скопировать шаблон компоненты меню типа "left"(надеюсь это обьяснять не надо ).
Затем необходимо добавить изображения к разделам продукции(не к товаром-а к разделам).Переходим в административную часть,контент-каталоги-продукция(выбираем продукция).Нам выведет разделы нашей продукции.Меняем один из разделов(изобр.1)
(изображения 1)
Добавляем картинку раздела(лучше с компьютера-у меня почему-то когда добавляю со структуры не загружалось)изображения 2.
изображения 2
Сохраняем.
Далее я меняла сам код меню.Итак поехали.
<?if (!defined("B_PROLOG_INCLUDED" ) || B_PROLOG_INCLUDED!==true)die();?>
<?
if (count($arResult) < 1)
return;
?>
/*[I]практически все компонеты битрикс свёрстаны под таблицу(теги tr,td).Но я использовала стандартно nav и список ul,li-смотрите код.class-это для вёрстки я использовала-классу прописаны какие-то css свойства)[/I]*/
<nav class="main-menu">
<ul>
<?
/*[I](чтоб не в тупую копировать,советую внимательно прочитать [url]http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblocksection/getlist.php[/url] и разобратся с примерами ниже.Я использую фильтр $arFilter,в котором массив ,по которому будет сортироватся по инфоблоку типа "catalog",с id=6(у меня несколько инфоблоков) и уровень вложенности=1 "DEPTH_LEVEL"=>1.Если 2 то у нас отражались бы и подразделы,а мне это не нужно было)[/I]*/
$arFilter = Array("PROPERTY"=>array("S_BRAND"=>$ar_enum_list["ID"],"IBLOCK_TYPE"=>"catalog","IBLOCK_ID"=>6, "DEPTH_LEVEL"=>1);
/*[I]переменной $resSection присваеваем функцию CIBlockSection::GetList,в которой вносится разделы по выборке $arFilter[/I]*/
$resSection = CIBlockSection::GetList(false,$arFilter);
/*[I]делаем цикл-это тоже практически во всех компонентах.Просто здесь у нас пробегается по всем разделам,в других компонентам по всем элементам раздела,или по чему то ещё-не обязательно по продукции циклы.Итак,переменной $arSect мы присваиваем раздел.Потом в переменную $arSect мы будем выводить всё что нам нужно.То есть не только изображения раздела,а например описания раздела $arSect["DESCRIPTION"].Далее вы поймёте[/I] */
while ($arSect = $resSection->GetNext() )
{
/*[I]А теперь то что нужно.Для того чтоб выводились [B]изображения разделов [/B]мы переменной $resPicture присваиваем функцию CFile::ShowImage,в которую заносится изображения наших разделов $arSect['[B]PICTURE[/B]'] [/I]*/
$resPicture=CFile::ShowImage($arSect['PICTURE'],"","", true);
?>
/*[I]условие если пункт меню активный[/I]*/
<?if($arSect["SELECTED"]):?>
<li>
/* [I]в тег a присваиваем путь к разделам.В href заносим переменную $arSect["SECTION_PAGE_URL"].Если радел имеет картинку(if ($arSect["PICTURE"[/I]])[I]),то выводим <?=$resPicture?>.Только не нужно прописать img src="<?=$resPicture?>",иначе когда вы сохраните и просмотрите результат,а точнее код на вашем сайте через браузер,там выводится img src="img src="путь к изображению раздела""[/I]*/
<a href="<?=$arSect["SECTION_PAGE_URL"]?>" class="selected"><?if ($arSect["PICTURE"]){?><?=$resPicture?><?}?>
<span class="text-menu"><?=$arSect["NAME"]?></span></a>
</li>
<?else:?>
/*[I]Для неактивных пунктов меню условия[/I]*/
<li>
<a href="<?=$arSect["SECTION_PAGE_URL"]?>"><?if ($arSect["PICTURE"]) {?><?=$resPicture?><?}?>
<span class="text-menu"><?=$arSect["NAME"]?></span></a>
</li>
<?endif?>
<?}?>
</ul><!-- //top-menu-->
</nav>
Если что-то не так-сори.У меня всё работает.
Первое что вам нужно сделать это скопировать шаблон компоненты меню типа "left"(надеюсь это обьяснять не надо ).
Затем необходимо добавить изображения к разделам продукции(не к товаром-а к разделам).Переходим в административную часть,контент-каталоги-продукция(выбираем продукция).Нам выведет разделы нашей продукции.Меняем один из разделов(изобр.1)
(изображения 1)
Добавляем картинку раздела(лучше с компьютера-у меня почему-то когда добавляю со структуры не загружалось)изображения 2.
изображения 2
Сохраняем.
Далее я меняла сам код меню.Итак поехали.
<?if (!defined("B_PROLOG_INCLUDED" ) || B_PROLOG_INCLUDED!==true)die();?>
<?
if (count($arResult) < 1)
return;
?>
/*[I]практически все компонеты битрикс свёрстаны под таблицу(теги tr,td).Но я использовала стандартно nav и список ul,li-смотрите код.class-это для вёрстки я использовала-классу прописаны какие-то css свойства)[/I]*/
<nav class="main-menu">
<ul>
<?
/*[I](чтоб не в тупую копировать,советую внимательно прочитать [url]http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblocksection/getlist.php[/url] и разобратся с примерами ниже.Я использую фильтр $arFilter,в котором массив ,по которому будет сортироватся по инфоблоку типа "catalog",с id=6(у меня несколько инфоблоков) и уровень вложенности=1 "DEPTH_LEVEL"=>1.Если 2 то у нас отражались бы и подразделы,а мне это не нужно было)[/I]*/
$arFilter = Array("PROPERTY"=>array("S_BRAND"=>$ar_enum_list["ID"],"IBLOCK_TYPE"=>"catalog","IBLOCK_ID"=>6, "DEPTH_LEVEL"=>1);
/*[I]переменной $resSection присваеваем функцию CIBlockSection::GetList,в которой вносится разделы по выборке $arFilter[/I]*/
$resSection = CIBlockSection::GetList(false,$arFilter);
/*[I]делаем цикл-это тоже практически во всех компонентах.Просто здесь у нас пробегается по всем разделам,в других компонентам по всем элементам раздела,или по чему то ещё-не обязательно по продукции циклы.Итак,переменной $arSect мы присваиваем раздел.Потом в переменную $arSect мы будем выводить всё что нам нужно.То есть не только изображения раздела,а например описания раздела $arSect["DESCRIPTION"].Далее вы поймёте[/I] */
while ($arSect = $resSection->GetNext() )
{
/*[I]А теперь то что нужно.Для того чтоб выводились [B]изображения разделов [/B]мы переменной $resPicture присваиваем функцию CFile::ShowImage,в которую заносится изображения наших разделов $arSect['[B]PICTURE[/B]'] [/I]*/
$resPicture=CFile::ShowImage($arSect['PICTURE'],"","", true);
?>
/*[I]условие если пункт меню активный[/I]*/
<?if($arSect["SELECTED"]):?>
<li>
/* [I]в тег a присваиваем путь к разделам.В href заносим переменную $arSect["SECTION_PAGE_URL"].Если радел имеет картинку(if ($arSect["PICTURE"[/I]])[I]),то выводим <?=$resPicture?>.Только не нужно прописать img src="<?=$resPicture?>",иначе когда вы сохраните и просмотрите результат,а точнее код на вашем сайте через браузер,там выводится img src="img src="путь к изображению раздела""[/I]*/
<a href="<?=$arSect["SECTION_PAGE_URL"]?>" class="selected"><?if ($arSect["PICTURE"]){?><?=$resPicture?><?}?>
<span class="text-menu"><?=$arSect["NAME"]?></span></a>
</li>
<?else:?>
/*[I]Для неактивных пунктов меню условия[/I]*/
<li>
<a href="<?=$arSect["SECTION_PAGE_URL"]?>"><?if ($arSect["PICTURE"]) {?><?=$resPicture?><?}?>
<span class="text-menu"><?=$arSect["NAME"]?></span></a>
</li>
<?endif?>
<?}?>
</ul><!-- //top-menu-->
</nav>
Если что-то не так-сори.У меня всё работает.
