Создание сайтов на 1С Битрикс стало еще просто, используйте готовые шаблоны! Подключайте современные модули, делая ваш сайт еще эффективнее!
Например, парсер сайтов

Конструктор меню

1 000 i
Заказать
Оформление заказа
х
В наличии
Для управления меню больше не нужно создавать физические файлы, удобный интерфейс в административном разделе позволит создать и настроить неограниченное количество меню для сайта и вывести их при помощи компонента.

О модуле
  • Меню работает на основе HighloadBlock;
  • Поддерживает все стандартные шаблоны для меню от 1С Битрикс;
  • Легко управлять и добавлять многоуровневые разделы;
  • Позволяет расширять меню при помощи AddEventHandler;
  • Поддерживает композитный режим;
  • Готовые адаптивные шаблоны меню.
Решение устанавливается стандартно для Marketplace http://marketplace.1c-bitrix.ru/about/index.php



  • Активируйте модуль, передите в раздел "Сервисы" -> "Меню";

  • Выберите или создайте автоматически нужный для модуля HighloadBlock;

  • Выберите из списка добавленное ранее меню или создайте новое при помощи кнопки "Добавить новое меню";

  • Укажите название меню (отображается только в админ. панели);

  • Нажмите добавить строку - это отдельный пункт в меню;

  • Иконка (крестик) слева сверху - удаляет пункт меню;

  • Иконка (плюс) справа сверху - добавляет вложенные пункты меню;

  • Пункты меню можно перетаскивать при помощи мышки.

Свойства пункта меню:

  • Название - отображается как название на сайте;

  • Ссылка - ссылка на сайте (рекомендуется указывать без домена от корня сайта);

  • Дополнительно: Классы - будут переданы в шаблон компонента;

  • Дополнительно: Атрибуты - будут переданы в шаблон компонента;

Как добавить созданное меню на сайт



Для отображения созданного меню на сайте есть два варианта:

1. Разместить компонент при помощи визуального редактора на нужной вам странице или включаемой области: В правой части визуального редактора среди списка компонентов нажмите на "ПраймВеб", затем перетащите компонент "Меню" в редактируемую область. Откроются настройки компонента (ниже описание каждого параметра)

2. При помощи кода:

<?$APPLICATION->IncludeComponent(

   "pr:menu",

   "horizontal",

   Array(

      "CACHE_GROUPS" => "Y",

      "CACHE_TIME" => "36000000",

      "CACHE_TYPE" => "A",

      "HLBLOCK_ID" => "1",

      "MENU_ID" => "1"

   )

);?><br>

Список параметров компонента:

  • Кеширование (CACHE_GROUPS, CACHE_TIME, CACHE_TYPE) - настройки для кеширования компонента

  • HighloadBlock: ID (HLBLOCK_ID) - Идентификатор Highload блока

  • Menu: ID (MENU_ID) - Идентификатор созданного меню

Для разработчиков



Как удалить кеш определенного меню?



Кеш компонента меню размещается по адресу:
~/bitrix/cache/#SITE_ID#/pr/menu/#HLBLOCK_ID#_#MENU_ID#/
Можно удалить при помощи кода (например HighloadBlock в котором создано меню = 5, ID меню = 3):
BXClearCache(true, '/s1/pr/menu/5_3/');


Как добавить (разделы/элементы/произвольные ссылки) для нужного пункта меню?



Перед тем как модуль сформирует финальный массив пунктов меню, добавлено событие OnBeforeItemsArrayMake.
/**

* Передается массив

*

* @param int $hl_id - ID HighloadBlock блока

* @param int $menu_id - ID меню

* @param array menu_items - массив пунктов меню из базы данных

* @return array - должен вернуть массив

*/
Событие должно вернуть такой же массив с вашими правками. Во внимание будет принят только menu_items.



Пример кода:
AddEventHandler("pr.menu", "OnBeforeItemsArrayMake", "prOnBeforeItemsArrayMake");

function prOnBeforeItemsArrayMake($data = array())

{

    \CModule::IncludeModule('iblock');

    $hl_id   = $data['hl_id'];

    $menu_id = $data['menu_id'];

    // для меню ID = 3 из HighloadBlock = 5

    if($menu_id == '3' AND $hl_id == '5')

    {

        // Выберем нужные разделы из инфоблока

        $res = \CIBlockSection::GetList(array(), array('IBLOCK_ID' => 6), false, array('ID', 'SECTION_PAGE_URL', 'NAME'));

        while($arF = $res->GetNext())

        {

            $new_item = array(

                'id'         => 'section_'.$arF['ID'], // ОБЯЗАТЕЛЬНО добавить префикс к ID, чтобы не смешивать с ID пунктов меню из базы данных

                'parent'     => '5', // К какому пункту меню добавляем дополнительные элементы

                'name'       => $arF['NAME'], // название пункта меню

                'link'       => $arF['SECTION_PAGE_URL'], // ссылка пункта меню

                'classes'    => 'custom_class', // классы если требуется

                'attributes' => 'custom_attr', // атрибуты если требуется

            );

            $data['menu_items'][] = $new_item; // дополним в массив всех пунктов меню новый пункт

        }

    }

    // вернем обратно кастомизированный массив

    return $data;

}

Событие OnBeforeItemsArrayMake кешируется вместе с компонентом.
Все вопросы и пожелания можно отправить по e-mail: support@01pr.ru с темой: Модуль "Конструктор меню".

x