Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С Битрикс
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
cubapro
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 10
1

Вывод определенных категорий в horizontal menu

22.07.2013, 20:10. Просмотров 4005. Ответов 2
Метки нет (Все метки)

Всем доброго дня.
В horizontal menu необходимо вывести, определенные категории, либо только те категории в которых есть подкатегории.
Если это возможно, подскажите пожалуйста, как это делается примерно, буду очень благодарен.

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    <!-- Horizontal menu -->
      <?if ($wizTemplateId == "eshop_horizontal"):?>
         <?$APPLICATION->IncludeComponent("bitrix:menu", "tree_horizontal", array(
   "ROOT_MENU_TYPE" => "left",
   "MENU_CACHE_TYPE" => "A",
   "MENU_CACHE_TIME" => "36000000",
   "MENU_CACHE_USE_GROUPS" => "Y",
   "MENU_CACHE_GET_VARS" => array(
   ),
   "MAX_LEVEL" => "4",
   "CHILD_MENU_TYPE" => "left",
   "USE_EXT" => "Y",
   "DELAY" => "N",
   "ALLOW_MULTI_SELECT" => "N"
   ),
   false
);?>
      <?elseif ($wizTemplateId == "eshop_vertical" || $wizTemplateId == "eshop_vertical_popup"):?>
         <div class="header-brandzone-line"></div>
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.07.2013, 20:10
Ответы с готовыми решениями:

Как в меню (шаблон horizontal multilevel) скрыть вывод товаров, оставив только разделы?
Добрый день! Инфоблок каталог - некоторые товары находятся в двух категориях одновременно, из-за...

Вывод категорий
Подскажите, кто знает как сделать чтобы в списке категорий категории выводились в две колонки. У...

Вывод категорий меню
Доброго времени суток! Проблемка у меня такая - редактирую шаблон DLE под себя. В данный момент...

Вывод категорий в определенном формате
Здравствуйте! Необходимо вывести категории картинка+заголовок со ссылкой в необычном пазле. Не...

Компонент menu и menu.section вывести картинку
Здравствуйте, просмотрел все различные тему, перепробовал все приведенные коды, но картинку так и...

2
Itachi261092
Веб-Разработчик
82 / 82 / 9
Регистрация: 23.01.2012
Сообщений: 701
29.07.2013, 12:56 2
cubapro, нужно создать файл .left.menu_ext.php
и в нём редактировать массив вывода ссылок. то есть смотрите. у вас в меню выводится массив $aMenuLinks который задаётся статикой в файле left.menu.php если не ошибаюсь. файл этот находится в корне сайта если меню общее либо в разделе для которого оно предназначено. статический массив выглядит вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$aMenuLinks = Array(
    Array(
        "Главная", 
        "/ru/", 
        Array(), 
        Array(), 
        "" 
    ),
        Array(
        "О компании", 
        "/ru/about/", 
        Array(), 
        Array(), 
        "" 
    )
);
Ваша задача изменить этот массив так чтобы в списке были либо полностью ваши данные генерируемые динамически либо чтобы ваши данные добавлялись вниз или вверх массива (в центр тоже можно но не советую так делать)

файл .left.menu_ext.php содержит в себе именно тот код для манипуляции этим массивом.
Например у меня он выглядит вот так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<?
global $APPLICATION;
//данная конструкция вставляет в меню пункты из разделов и подразделов инфоблока
//то есть главные разделы и их дочерние разделы.
// компонент сам формирует массив $aMenuLinksExt в нужном виде
$aMenuLinksExt = $APPLICATION->IncludeComponent(
    "bitrix:menu.sections",
    "",
    Array(
        "SECTION_PAGE_URL" => "#SECTION_ID#/", /* Ссылка составляется из ида раздела*/
        "IBLOCK_TYPE" => "CATALOG", /* тип инфоблока */
        "IBLOCK_ID" => "5", /* ID инфоблока */
        "DEPTH_LEVEL" => "2", /* уровень вложенности разделов */
        "CACHE_TYPE" => "N",
        "CACHE_TIME" => "36000000"
    ),
    false
);
 
//echo '<pre>'; print_r($aMenuLinksExt); echo '</pre>'; массив для промежуточной проверки значений
/* потом остается только объединить массивы в один*/
/* файл .тип_меню.menu_ext.php должен возвращать массив $aMenuLinks для корректной работы компонента меню */
//у меня созданный из разделов инфоблока массив добавляется в центр поэтому тут такой геморрой
//массив для статических пунктов ниже
$aMenuLinksDown = Array(
    Array(
        "Контакты",
        "/ru/contacts/",
        Array(),
        Array(),
        ""
    )
);
//объединяем полученные массивы в один общий.
$aMenuLinks = array_merge(
    $aMenuLinks, /* массив с пунктами меню, который будет редактироваться из админки. находится вверху*/
    $aMenuLinksExt, /* наш созданный массив с разделами - центр*/
    $aMenuLinksDown /* массив статический. редактируется только тут. добавляет элементы меню в нижнюю часть*/
);
?>
Тут не совсем то что вы просили, но идея надеюсь ясна. можно переделать этот код под ваши нужды. тут не очень сложно. просто нужно добавить несколько проверок по вашим условиям. для более детального понимания как это работает, смотрите мануалы по компоненту bitrix:menu.sections и вот
этот компонент генерирует массив для меню на основе данных инфоблока
1
cubapro
0 / 0 / 0
Регистрация: 19.05.2013
Сообщений: 10
29.07.2013, 13:34  [ТС] 3
Отлично, спасибо большое
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.07.2013, 13:34

Вывод установленного количества записей для определенных категорий
Привет всем! Для вывода определенного количества записей для определенных категорий, в данном...

Запретить доступ к новостям всем, кроме определенных категорий
Здравствуйте. Подскажите, в чем проблема. Изменения вношу в файл fullstory.tpl. &lt;div...

Как сделать для определенных категорий свои шаблоны shortstory и fullstory?
как сделать для определенных категорий свои шаблоны shortstory и fullstory? есть категории...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.