Utworzyłem niestandardowe menu (nazwijmy to „mynav”), aw moim motywie stworzyłem specjalnie dla niego szablon ( block--menu--menu-mynav.tpl.php
), który zawiera:
<div id="mynav" class="<?php print $classes; ?>"<?php print $attributes; ?>>
<?php print $content ?>
</div>
To działa dobrze.
Jednak wolę zastosować identyfikator do nieuporządkowanej listy, która jest generowana i zawarta w $content
. Chyba muszę utworzyć taką funkcję MYTHEME_links__system_mynav_menu
:
function MYTHEME_links__system_mynav_menu($variables) {
return "TEST"; // Generate HTML here (<ul id="mynav">...)
}
ale nie ma to wpływu.
Co ja robię źle?
Odpowiedzi:
Aby utworzyć motyw do listy nieuporządkowanej, musisz wywołać theme_menu_tree (). Możesz edytować plik template.php, aby to nazwać.
Następnie, jeśli chcesz utworzyć temat linków, wywołaj theme_menu_link ().
Problem z Drupalem 7 polega na tym, że występuje duży błąd, jeśli chodzi o wyświetlanie aktywnej ścieżki niestandardowych menu.
Zobacz problem
Problem nr 520106 - Nie można dynamicznie ustawić aktywnego śladu
Problem nr 942782 - Menu niestandardowe nigdy nie otrzymuje aktywnego śladu
Zasadniczo nie masz szczęścia, jeśli chcesz mieć prawdziwe niestandardowe menu. Te problemy już od dawna stoją w społeczności drupali, więc nie jestem pewien, czy zostaną naprawione w najbliższym czasie. Nie wiem, czy jest jakiś PHP, który może w tym pomóc. Możesz przejść do niektórych alternatywnych modułów, aby ułatwić funkcjonalność, takich jak Atrybuty menu i Blok menu . Oba mogą pomóc w obejściu systemu menu w Drupal 7.
źródło
W szablonie theme.php Twojego motywu był to sposób na robienie rzeczy w Drupal 6
W Drupal 7 musisz zadzwonić
źródło
MYTHEME_menu_link
wydaje się obsługiwać tylko poszczególne linki. Nie mogę dotrzeć doul
.