Podróżowałem po Internecie i wcale nie jest oczywiste, jak tworzyć własne menu. Szukałem godzin i nie znalazłem ani jednego postu, który ilustruje proces tworzenia menu i dostosowywania jego wyników od początku do końca. Wygląda na to, że jest to proces wieloetapowy:
- Utwórz menu za pomocą interfejsu Drupal.
- Utwórz funkcję motywu w
template.php
pliku, aby utworzyć motyw wyjściowy. - Naraż to menu na plik szablonu (jakoś), dodając go jako zmienną.
- Wywołaj
theme
funkcję z menu w pliku szablonu.
1 jest łatwa do zrobienia, problemy, na które napotykam, dotyczą 2, 3 i 4. Patrząc na domyślny szablon strony, widzę, że odsłania główne menu w zmiennej $main_menu
. W dalszej części strony możesz zobaczyć funkcję theme('links__system_main_menu', array('links' => $main_menu...
, co oznacza, że szuka gdzieś odpowiednio nazwanej funkcji motywu i używa jej do wygenerowania wyniku.
Wiem, że jeśli umieszczę function theme_links__system_main_menu(&$variables) {...}
w pliku template.php, Drupal użyje tej funkcji w przeciwieństwie do function theme_menu_links(&$variables) {...}
.
Nie wiem, jak Drupal łączy niestandardowe menu, które utworzyłem za pomocą tej funkcji. Powiedzmy na przykład, że stworzyłem menu o nazwie My Menu
. Czy mogę utworzyć następującą funkcję w moim template.php
pliku i utworzyć motyw wyjściowy dla tego menu?function theme_links__system_my_menu(&$variables) {...}
W jaki sposób można udostępnić to niestandardowe menu w pliku szablonu? W jaki sposób Drupal wystawia $main_menu
zmienną na page.tpl.php?
Myślę, że kluczem, którego tu brakuje, jest sposób osadzenia zmiennej reprezentującej moje niestandardowe menu na stronie szablonu. W większości jednak jestem całkowicie zagubiony w tym, co robić po utworzeniu menu.
Dzięki za pomoc.
EDYCJA: Prawdopodobnie powinien opublikować to, co robię. Zgodnie z moim komentarzem do BetaRide poniżej, muszę wstrzyknąć dostosowany kod HTML do <li>
elementów pozycji menu. W szczególności dodaję ikony Bootstrap na Twitterze.