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.
Możesz zajrzeć do modułu Nice Menus . Oto cytat na ten temat (ze strony projektu modułu):
źródło
W zależności od tego, co chcesz dostosować, twoje podejście jest bardzo trudne. Zwykle tworzę menu poprzez interfejs Drupala, tak jak sugerowałeś. Biorę moduł programisty motywów i Firebuga, aby dowiedzieć się, które szablony, haki i dyrektywy CSS muszę zastąpić, aby dostosować je do moich potrzeb.
Warto rozważyć utworzenie podtematu podstawowego motywu, którego używasz, zanim zaczniesz dostosowywać. To znacznie ułatwia aktualizację podstawowego motywu.
źródło
tutaj jest inteligentny kod, który może uzyskać dostęp do wszystkich pozycji menu dla dowolnego poziomu 2 lub 3 lub więcej
umieść ten kod w pliku tpl Nie zapomnij wywołać boostrap js i css ostatnich wersji:
ten kod zwróci menu dla klas css. Możesz użyć własnego. Używam bootstrap z jakimś niestandardowym css
źródło