То ли я читать не умею, что ли что — но в официальной документации я не увидел той информации, которую всё таки нашел в сети и решил оставить себе в блоге в виде справочного поста.
Итак, три статьи, которые мне «зашли» — первая, собственно вводная — тоже что в документации, только более понятно — структура файла меню
Вторая и третья статьи уже собственно затрагивают дополнительные параметры четвёртого параметра
Таким образом, приведу пример файла из второй статьи со структурой меню, которой в структуре может вообще не быть — то есть подпункты, можно добавить.
Я воспользовался этим приёмом для того, чтобы сделать верхний пункт меню некликабельным («Аэропорты Москвы»), а пункты подменю остались кликабельными.
Пример на сайте reklamy.ru — главное меню, раздел Реклама в аэропортах.
Так же мне нужно было, чтобы подпункты не были по структуре внутри верхнего пункта (т.к. он вообще не имеет своего адреса).
Свой файл выкладывать не буду — смысла нет, там всё по аналогии с файлом из первой статьи, который я себе сохраню
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 |
$aMenuLinks = array( // Родительский пункт меню Array( «Создание сайтов», «/services/create-sites/», Array(«/services/create-sites/»), Array( «FROM_IBLOCK» = 1, // Пункт является родительским «IS_PARENT» = 1, // Уровень вложенности 1 «DEPTH_LEVEL» = 1 ), «» ), // Дочерний подпункт Array( «Создание Landing Page», «/services/create-sites/landing-page/», Array(«/services/create-sites/landing-page/»), Array( «FROM_IBLOCK» = 1, // Пункт не является родительским «IS_PARENT» = 0, // Уровень вложенности 2 «DEPTH_LEVEL» = 2 ), «» ), Array( «Виды услуг», «/services/optimization/», Array(), Array(), «» ) ) |
Ну и для себя оставлю репост структуры файла меню с первой статьи — все пять параметров (без описания дополнительных).
$aMenuLinks = Array(
Array(
‘Полезные статьи’,
‘/articles/’,
Array(),
Array(),
»
),
);
В переменной $aMenuLinks задается массив пунктов меню. Каждый пункт описывается массивом из 5 элементов:
1. Название пункта, в примере это «Полезные статьи»
2. Адрес, в примере это «/articles/», также может быть указан абсолютный путь: «http://www.site.ru/»
3. Массив дополнительных адресов, на которых описываемый пункт меню будет выделен, например:
Array(
‘/articles1/’,
‘/articles2/’,
‘/articles3/’,
);
4. Массив произвольных параметров. Здесь это ассоциативный массив: ‘ключ’=>’значение’. Очень удобное решение, т.к. этот массив можно заполнять через админку:
Режим правки → Редактировать пункты меню → Редактировать меню в Панели управления → Расширенный режим
Здесь же можно задать дополнительные адреса и условие показа, это пункт 5. Далее эти параметры можно использовать в шаблоне меню, по своему усмотрению. Пример:
Array(
‘target’ => ‘_blank’,
‘fon-color’ => ‘#123456’,
);
5. Условие, при котором пункт меню будет отображен. Это PHP выражение, которое должно вернуть «true». В админке реализован конструктор таких выражений. Так, например, для авторизованных пользователей можно показывать пункт «Личный кабинет», а для не авторизованных — «Вход»:
global $USER;
$aMenuLinks = Array(
Array(
‘Личный кабинет’,
‘/personal/’,
Array(),
Array(),
‘$USER->IsAuthorized()’
),
Array(
‘Вход’,
‘/auth/’,
Array(),
Array(),
‘!$USER->IsAuthorized()’
),
);