То ли я читать не умею, что ли что – но в официальной документации я не увидел той информации, которую всё таки нашел в сети и решил оставить себе в блоге в виде справочного поста.
Итак, три статьи, которые мне “зашли” – первая, собственно вводная – тоже что в документации, только более понятно – структура файла меню
Вторая и третья статьи уже собственно затрагивают дополнительные параметры четвёртого параметра
Таким образом, приведу пример файла из второй статьи со структурой меню, которой в структуре может вообще не быть – то есть подпункты, можно добавить.
Я воспользовался этим приёмом для того, чтобы сделать верхний пункт меню некликабельным (“Аэропорты Москвы”), а пункты подменю остались кликабельными.
Пример на сайте 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()’
),
);