Ich bin durch das Web gekreuzt und es ist überhaupt nicht offensichtlich, wie man benutzerdefinierte Menüs thematisiert. Ich habe stundenlang gesucht und keinen einzigen Beitrag gefunden, der den gesamten Prozess der Erstellung eines Menüs und der Anpassung der Ausgabe veranschaulicht. Es scheint, dass dies ein mehrstufiger Prozess ist:
- Erstellen Sie das Menü über die Drupal-Oberfläche.
- Erstellen Sie eine Themenfunktion in Ihrer
template.php
Datei, um die Ausgabe zu thematisieren. - Setzen Sie dieses Menü (irgendwie) einer Vorlagendatei aus, indem Sie es als Variable hinzufügen.
- Rufen Sie die
theme
Funktion im Menü der Vorlagendatei auf.
1 ist einfach genug, die Probleme, auf die ich stoße, sind 2, 3 und 4. Wenn ich mir die Standardseitenvorlage ansehe, sehe ich, dass das Hauptmenü in der Variablen angezeigt wird $main_menu
. Später auf der Seite sehen Sie die Funktion theme('links__system_main_menu', array('links' => $main_menu...
. Das bedeutet, dass Sie irgendwo nach einer entsprechend benannten Themenfunktion suchen und diese verwenden, um die Ausgabe zu generieren.
Ich weiß, wenn ich function theme_links__system_main_menu(&$variables) {...}
in meine template.php-Datei platziere, wird Drupal diese Funktion im Gegensatz zu verwenden function theme_menu_links(&$variables) {...}
.
Was ich nicht weiß, ist, wie Drupal das benutzerdefinierte Menü, das ich mit dieser Funktion erstellt habe, verknüpft. Nehmen wir zum Beispiel an, ich habe ein Menü namens erstellt My Menu
. Könnte ich die folgende Funktion in meiner template.php
Datei erstellen und die Ausgabe für dieses Menü thematisieren?function theme_links__system_my_menu(&$variables) {...}
Wie stellt man dieses benutzerdefinierte Menü auch einer Vorlagendatei zur Verfügung? Wie macht Drupal die $main_menu
Variable page.tpl.php zugänglich?
Ich denke, der Schlüssel, den ich hier vermisse, ist, wie man die Variable, die mein benutzerdefiniertes Menü darstellt, in eine Vorlagenseite einbettet. Meistens habe ich jedoch keine Ahnung, was ich tun soll, nachdem ich das Menü erstellt habe.
Danke für die Hilfe.
EDIT: Sollte wohl posten, was ich mache. Gemäß meinem Kommentar zu BetaRide unten muss ich benutzerdefiniertes HTML in die <li>
Elemente der Menüelemente einfügen . Insbesondere füge ich Twitter Bootstrap-Symbole hinzu.
Vielleicht möchten Sie sich das Nice Menus- Modul ansehen . Hier ist ein Zitat darüber (von der Projektseite des Moduls):
quelle
Je nachdem, was Sie anpassen möchten, ist Ihr Ansatz viel zu schwierig. Normalerweise erstelle ich das Menü über die Drupal-Oberfläche, wie Sie es vorgeschlagen haben. Mit dem Theme Developer Modul und Firebug finde ich heraus, welche Templates, Hooks und CSS-Direktiven ich überschreiben muss, um sie an meine Bedürfnisse anzupassen.
Es lohnt sich, ein Unterthema für das verwendete Basisthema zu erstellen, bevor Sie mit der Optimierung beginnen. Auf diese Weise können Sie Ihr Basisthema viel einfacher aktualisieren.
quelle
Hier ist ein intelligenter Code, der auf alle Menüelemente für Level 2 oder 3 oder mehr zugreifen kann
Platzieren Sie diesen Code in Ihrer tpl-Datei. Vergessen Sie nicht, die letzten Versionen von Boostrap js und CSS aufzurufen:
Dieser Code gibt das Menü für CSS-Klassen zurück, die Sie selbst verwenden können. Ich verwende Bootstrap mit einigen benutzerdefinierten CSS
quelle