Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

menu.section добавить вывод изображении и количество елементов в разделе

00 голосов
3
Здравствуйте.

Пытаюсь сделать меню каталога с помощью menu.sections или store.menu.sections, только вот необходимо добавить вывод еще картинок и количество элементов в разделе.
Кто знает или сталкивался с этом, прошу помочь.
спросил 03 Фев, 14 от Muzdie (300 баллов)

3 Ответы

00 голосов
Вывод количества элементов это хороший подход к созданию меню каталога на сайте имха. Может соизволит кто то тебе тут ответить на халявном форуме, хорошо получится. Присоединяюсь к вопросу, админы откликнетесь пожалуйста если знаете как сделать, подскажите нам всем

Насчет изображений наверняка вот этот способ подойдет, хотя он для каталога сделан, но картинки наверное можно и к меню приделать, т.е. по описанному в блоге примеру добавить рядом с названиями разделов <img src="<?=$arSection["PICTURE"]["SRC"]?>"?>

http://dev.1c-bitrix.ru/community/webdev/user/98628/blog/
ответил 12 Июнь, 14 от XuwHuK (180 баллов)
00 голосов
Цитата
Dima.. пишет:
Может соизволит кто то тебе тут ответить на халявном форуме, хорошо получится
Могу этот вопрос так-же задать в клиентском форуме, ибо я являюсь клиентом. Вывод картинки удалось сделать, опишу днем, а вот  как количество, пока что не получается.
ответил 10 Окт, 14 от Muzdie (300 баллов)
00 голосов
И так, уже сам решил этот вопрос. Описываю как это сделал если кому-то еще понадобится.

Воспользовался компонентом menu.sections,  скопировал и дал ему другое имя (например menu.sections.catalog) что-бы не трогать стандартный.

Открываем файл component.php и редактируем:
В файле ищем массив который отвечает за вывод свойств разделов, а так-же будут ли возвращать поле ELEMENT_CNT или нет

Код
$rsSections = CIBlockSection::GetList($arOrder, $arFilter, false, array(
         "ID",
         "DEPTH_LEVEL",
         "NAME",
         "SECTION_PAGE_URL",
      ));
 
Меняем на следующий, а в него добавил детальный рисунок и включил что-бы он возвращал поле ELEMENT_CNT (true), так-же этому полю можно еще задать некоторые параметры уже в фильтре, об этом больше в  - http://dev.1c-bitrix.ru/api_help/iblock/classes/ciblocksection/getlist.php
 
Код
$rsSections = CIBlockSection::GetList($arOrder, $arFilter, true, array(
         "ID",
         "DEPTH_LEVEL",
         "NAME",
         "SECTION_PAGE_URL",
         "DETAIL_PICTURE",
      ));
 
Далее находим часть кода которая записывает свойства в массив

Код
 $arResult["SECTIONS"][] = array(
            "ID" => $arSection["ID"],
            "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"],
            "~NAME" => $arSection["~NAME"],
            "~SECTION_PAGE_URL" => $arSection["~SECTION_PAGE_URL"],
         );
В нем добавляем нужные нам поля

Код
$arResult["SECTIONS"][] = array(
            "ID" => $arSection["ID"],
            "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"],
            "~NAME" => $arSection["~NAME"],
            "~SECTION_PAGE_URL" => $arSection["~SECTION_PAGE_URL"],
            "DETAIL_PICTURE" => $arSection["DETAIL_PICTURE"],
            "ELEMENT_CNT" => $arSection["ELEMENT_CNT"],
         );
 

Далее находим часть кода которая уже передает данные в меню

Код
$aMenuLinksNew[$menuIndex++] = array(
      htmlspecialchars($arSection["~NAME"]),
      $arSection["~SECTION_PAGE_URL"],
      $arResult["ELEMENT_LINKS"][$arSection["ID"]],
      array(
         "FROM_IBLOCK" => true,
         "IS_PARENT" => false,
         "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"],
      ),
   );
 

Добавляем наши новые свойства

Код
 $aMenuLinksNew[$menuIndex++] = array(
      htmlspecialchars($arSection["~NAME"]),
      $arSection["~SECTION_PAGE_URL"],
      $arResult["ELEMENT_LINKS"][$arSection["ID"]],
      array(
         "FROM_IBLOCK" => true,
         "IS_PARENT" => false,
         "DEPTH_LEVEL" => $arSection["DEPTH_LEVEL"],
         "DETAIL_PICTURE" => $arSection["DETAIL_PICTURE"],
         "ELEMENT_CNT" => $arSection["ELEMENT_CNT"],
      ),
   );

На этом в компоненте все. Далее идем в шаблон меню и выводим рисунок и количество. Хочу заметить что в свойство картинки будет код а не путь к ней, так что обрабатываем функциями CFile::GetPath, ShowImage.

На этом вроде все. Если есть вопросы задавайте.
ответил 11 Фев, 15 от Muzdie (300 баллов)

Похожие вопросы

0 голосов
3 ответов
0 голосов
1 ответ
0 голосов
2 ответов
0 голосов
4 ответов
спросил 27 Июль, 13 от Anton6 (160 баллов)