Я путешествовал по сети, и совершенно не очевидно, как оформить пользовательские меню. Я часами искал и не нашел ни одного поста, который иллюстрирует процесс от начала до конца создания меню и настройки его вывода. Кажется, это многоступенчатый процесс:
- Создайте меню через интерфейс Drupal.
- Создайте функцию theme в вашем
template.php
файле, чтобы оформить вывод. - Выставьте это меню в файл шаблона (каким-либо образом), добавив его в качестве переменной.
- Вызовите
theme
функцию в меню в файле шаблона.
1 достаточно легко сделать, проблемы, с которыми я сталкиваюсь, связаны с 2, 3 и 4. Глядя на шаблон страницы по умолчанию, я вижу, что он представляет главное меню в переменной $main_menu
. Позже на странице вы увидите функцию theme('links__system_main_menu', array('links' => $main_menu...
, которая означает, что она ищет где-то функцию с соответствующим именем и использует ее для генерации вывода.
Я знаю, что если я добавлю function theme_links__system_main_menu(&$variables) {...}
в свой файл template.php, Drupal будет использовать эту функцию вместо function theme_menu_links(&$variables) {...}
.
Чего я не знаю, так это того, как Drupal связывает пользовательское меню, которое я создал с этой функцией. Скажем, например, что я создал меню под названием My Menu
. Могу ли я создать следующую функцию в моем template.php
файле и тему вывода для этого меню?function theme_links__system_my_menu(&$variables) {...}
Кроме того, как сделать это пользовательское меню доступным для файла шаблона? Как Drupal предоставляет $main_menu
переменную page.tpl.php?
Я думаю, что ключ, который мне здесь не хватает, - это как встроить переменную, которая представляет мое пользовательское меню, в страницу шаблона. По большей части, хотя я полностью потерян с тем, что делать после создания меню.
Спасибо за помощь.
РЕДАКТИРОВАТЬ: Вероятно, следует опубликовать то, что я делаю. В соответствии с моим комментарием к BetaRide ниже, мне нужно добавить настраиваемый HTML в <li>
элементы пунктов меню. В частности, я добавляю иконки Twitter Bootstrap.
Вы можете заглянуть в модуль Nice Menus . Вот цитата об этом (со страницы проекта модуля):
источник
В зависимости от того, что вы хотите настроить, ваш подход будет очень сложным. Обычно я создаю меню через интерфейс Drupal, как вы предложили. Я беру модуль разработчика тем и Firebug, чтобы узнать, какие шаблоны, хуки и директивы CSS мне нужно переписать, чтобы настроить его под свои нужды.
Стоит подумать о создании подтемы базовой темы, которую вы используете, прежде чем начать настройку. Это значительно облегчает обновление вашей базовой темы.
источник
Вот умный код, который может получить доступ ко всем пунктам меню для любого уровня 2 или 3 или более
поместите этот код в ваш файл tpl, не забудьте вызвать boostrap js и css в последних версиях:
этот код возвратит меню для классов CSS, которые вы можете использовать самостоятельно. Я использую загрузчик с некоторыми пользовательскими CSS
источник