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

Пустой массив в .left.menu_ext.php

00 голосов
7
1)На страницу бросил компонент catalog.section.list, скопировал шаблон, выставил нужные параметры.
2)В файле template.php переписал всё и сделал вывод массива нужной структуры, в конце вывел этот массив через return
3)В файле .left.menu_ext.php подключил этот компонент таким образом

Код
<?
if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
global $APPLICATION;

$aMenuLinksExt=$APPLICATION->IncludeComponent(
   "bitrix:catalog.section.list",
   "submenu_news",
   Array(
      "IBLOCK_TYPE" => "TVN",
      "IBLOCK_ID" => "2",
      "SECTION_ID" => $_REQUEST["SECTION_ID"],
      "SECTION_CODE" => "",
      "COUNT_ELEMENTS" => "N",
      "TOP_DEPTH" => "2",
      "SECTION_FIELDS" => array(0=>"",1=>"",),
      "SECTION_USER_FIELDS" => array(0=>"",1=>"",),
      "SECTION_URL" => "",
      "CACHE_TYPE" => "A",
      "CACHE_TIME" => "36000000",
      "CACHE_GROUPS" => "Y",
      "ADD_SECTIONS_CHAIN" => "N"
   )
);
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/log.txt', "\n==============\n".var_export($aMenuLinksExt, true), FILE_APPEND);
$aMenuLinks = array_merge($aMenuLinks, $aMenuLinksExt);
?>


содержимое файла компонента /home/main/data/www/bitrix/templates/tvn_template/components/bitrix/catalog.section.list/submenu_news/template.php

Код
<?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();
   $arMenu = array();
   foreach($arResult['SECTIONS'] as $arSection):
      $arOrder = array(
         'SORT'         => 'ASC',
      );
      $arFilter = array(
         'IBLOCK_ID'    => $arSection['IBLOCK_ID'],
         'SECTION_ID'   => $arSection['ID'],
         'ACTIVE'      => 'Y'
      );
      $arSelect = array(
         'ID', 'NAME', 'DETAIL_PAGE_URL', 'PREVIEW_TEXT', 'PREVIEW_PICTURE'
      );      
      $arNavStartParams = array(
         'nPageSize' => 1
      );
      $cdbResult = CIBlockElement::GetList($arOrder, $arFilter, false, $arNavStartParams, $arSelect);
      $arLastNews = $cdbResult->GetNext();
      $arImage = CFile::GetFileArray($arLastNews['PREVIEW_PICTURE']);
      $arLastNewsItem = array(
         'NAME'   => $arLastNews['NAME'],
         'TEXT'   => TruncateText($arLastNews['PREVIEW_TEXT'], 100),
         'URL'   => $arLastNews['DETAIL_PAGE_URL'],
         'IMAGE'   => $arImage['SRC']
      );
      $arMenu[] = array(
         $arSection['NAME'],
         $arSection['LIST_PAGE_URL'] . $arSection['CODE'] . '/',
         array(),
         array(
            'FROM_IBLOCK' => $arSection['IBLOCK_ID'],
            'IS_PARENT' => false,
            'DEPTH_LEVEL' => '1',
         ),
         $arLastNewsItem
      );
   endforeach;
   return $arMenu;
?>
спросил 18 Июнь, 13 от Limur (240 баллов)

7 Ответы

00 голосов
Вру, массив не пуст, там содержиться 1, я так понимаю это результат работы CMain::IncludeComponent, но как мне сделать, что бы там содержался мой массив?
ответил 18 Июнь, 13 от Limur (240 баллов)
00 голосов
Вас не устраивает логика bitrix:menu.sections ?
ответил 04 Июль, 13 от Pomnep (13,960 баллов)
00 голосов
Цитата
Евгений Жуков пишет:
Вас не устраивает логика bitrix:menu.sections ?

Нет, моё меню в итоге должно выглядеть так Рисунок
при наведении на пункт "Новости", выпадает целый блок, там указанны категории новостей и к каждой категории, последняя новость (разделы инфоблока и последний элемент инфоблока). Куда дальше копать, я не знаю, массив вывел через global, но естественно новых параметров второго уровня меню не появилось в $arResult компонента меню.

p.s.
Нет, я конечно понимаю, что дизайнер извращенец, ему детородные органы уже оторвали, но делать как то надо.
ответил 08 Окт, 13 от Limur (240 баллов)
00 голосов
Люди, помогите, очень надо, заказчик серъёзный.
ответил 08 Янв, 14 от Limur (240 баллов)
00 голосов
Возьмите за основу bitrix:menu.sections. Все, что необходимо - выбирать для каждого раздела новость и сохранять данные в PARAMS пункта меню. Ну и шаблон вывода меню кастомизировать.
ответил 25 Апр, 14 от Pomnep (13,960 баллов)
00 голосов
Цитата
Евгений Жуков пишет:
Все, что необходимо - выбирать для каждого раздела новость и сохранять данные в PARAMS пункта меню.

Вот с этого места поподробнее, в какой момент это нужно делать? В какой массив? Какая должна быть структура?
ответил 21 Авг, 14 от Limur (240 баллов)
00 голосов
Во-первых, Вам надо скопировать bitrix:menu.sections в свое пространство имен и там с ним работать. Массив там один - перечень пунктов меню. Вот при генерации этого массива и добавьте свой код. Структура - какая Вам удобна (в рамках одного пункта меню). Главное, чтоб в шаблоне bitrix:menu Вы помнили про эту структуру.
ответил 26 Дек, 14 от Pomnep (13,960 баллов)

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

0 голосов
5 ответов
спросил 30 Окт, 13 от wogich (630 баллов)
0 голосов
1 ответ
0 голосов
1 ответ
0 голосов
1 ответ
спросил 18 Май, 13 от Volk123 (200 баллов)
0 голосов
2 ответов