Войти как пользователь
Вы можете войти на сайт, если вы зарегистрированы на одном из этих сервисов:
< >
1 2 3 4 5

Motyw menu Drupal 7 w wierszu

Dzisiaj musiałem wykonać dość typowe zadanie z motywem Drupala, zamieniając blok menu w zestaw linków wewnętrznych. Na zdjęciach musiałem iść

od tego: od tego:   do tego: do tego:

Odkąd zwykle robię dev moduł i podobne zadania dla Koumbit , Zdawałem sobie sprawę, że Drupal ma już wbudowaną klasę dla list zawierających łącza, które wyświetlają moje linki bezpośrednio. Ta klasa to „linki inline”. Niestety nie jestem pewien, jak zmienić te wartości w warstwie motywu. Odwiedziłem więc stronę API theme_menu_tree () z nadzieją na trochę inspiracji i znalazłem trochę w ten komentarz wgsimon . Motyw niestandardowy może zastąpić kompozycję konkretnego elementu menu w Drupal 7, używając wzorca THEME_menu_tree__MENU_NAME ().

Dodałem następujący kod do template.php mojego motywu, aby zarówno standardowe menu użytkownika, jak i nasze niestandardowe menu dla anonimowych użytkowników korzystały z wbudowanego motywu Drupala dla linków inline:

/ ** * Ustaw menu użytkownika w wierszu * / function customtheme_menu_tree__user_menu ($ variables) {return '& lt; ul class = "linki inline clearfix" & gt;' . $ zmienne ['drzewo']. „& lt; / ul & gt;” ; } / ** * Ustaw inline menu anonimowego użytkownika * / function customtheme_menu_tree__menu_user_menu_anonymous_ (zmienne $) {return '& lt; ul class = "link inline clearfix" & gt;' . $ zmienne ['drzewo']. „& lt; / ul & gt;” ; }

Po prostu zamień customtheme na nazwę motywu i zmień nazwy menu, aby użyć go samodzielnie.

Dla przełącznika języka zrobiłem coś podobnego po konsultacji locale_block_view () w api i widząc, że blok przełącznika języka używa motywu ('links__locale_block', $ variable); dostarczyć jej treści. Zastąpienie oparte na template.php wyglądało tak:

/ ** * Theme link do przełączania języków jako inline * / function customtheme_links__locale_block (zmienne $) {array_push ($ zmienne ['atrybuty'] ['class'], 'links', 'inline', 'clearfix'); return theme ('links', $ variables); }

Nauczyłem się więc, że wzorzec nazwa_funkcji theme_funkcji będzie działał dla każdej funkcji kompozycji nazywanej w ten sposób. Jestem pewien, że musi to być określone gdzieś w dokumentacji API Drupala.

W tym momencie moje menu wyglądało tak: W tym momencie moje menu wyglądało tak:

Ostatni krok jest bardziej specyficzny dla tematu. W moim przypadku przeniosłem zawartość <div class = "region region-header"> i otaczające znaczniki w mojej stronie.tpl.php przed logo i wstawiłem następujące reguły CSS do odpowiednich plików:

.region-header .block {display: inline-block; margin-bottom: 0; } .region-header {text-align: right; }

Wynik: Wynik:

Oczywiście, pozostało jeszcze trochę pracy, zanim produkt końcowy będzie wyglądał jak projekt, ale moim głównym problemem do tej pory było unikanie zaśmiecania mojego CSS kodem, który jest już obecny w rdzeniu Drupala.