Я путешествовал по сети, и совершенно не очевидно, как оформить пользовательские меню. Я часами искал и не нашел ни одного поста, который иллюстрирует процесс от начала до конца создания меню и настройки его вывода. Кажется, это многоступенчатый процесс:
- Создайте меню через интерфейс 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.