Drupal: automatisches hinzufügen von Menüpunkten, wenn neue Knoten Hinzugefügt werden
kann ich automatisch ein Menü-Element hinzuzufügen, wenn ich einen Knoten hinzufügen, um die Seite in Drupal?
In anderen Worten, kann ich das zuordnen eines übergeordneten Menü mit einem Knoten content-Typ, und dann automatisch die Kinder, wenn neue Knoten Hinzugefügt werden ?
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ja.
Ich bin sicher, es gibt ein Modul tun, um so etwas wie, dass, man konnte aber auch eigene erstellen.
Gibt es zwei Möglichkeiten, wie Sie könnte es gehen.
Könnten Sie hook_menu() - Abfrage für die Elemente, die Sie wollen, und zurückkehren, die richtige Menü-Struktur. Sie müssten auch sicherstellen, dass die Menü-cache neu aufgebaut wird auf einem Knoten speichern mit hook_nodeapi().
Sehen henricks' unten einen Kommentar darüber, warum das eine schlechte Idee
Alternitivly, die Sie nutzen könnten hook_nodeapi (), um eigene Menüpunkte mit menu_link_save().
Bearbeiten
hook_menu zurückkehren sollte, ein array von Menüpunkten, dies sind oft ziemlich statisch aber es ist nichts falsch mit diesen arrays werden dynamisch erzeugt.
So können Sie die Abfrage der node-Tabelle, um eine Liste der Knoten, die Sie möchten, Durchlaufen diese Elemente und dynamisch ein array erstellen, die enthält die richtigen Menüpunkte.
ganz grob:
hook_menu()
dafür!!!! Erstellen von Menü-Einträge sichtbar, ist nur eine Nebenwirkung/Komfort-feature der Haken, nicht Ihr Hauptzweck.. Das "Menü" erstellt/bearbeitet durch diesen Haken wird die Drupal-interne Menü system (router-Tabelle), nicht sichtbaren Menüs. Die sichtbaren Menüeinträge erstellt werden soll über menu_link_save, als pro Jeremys zweiter Vorschlag (dies ist, was hook_menu selbst nutzt zum erstellen der 'Komfort' - Einträge).hook_menu
im Prinzip, verstopfen die router-Tabelle mit einem Eintrag pro Knoten ist eine riesige Nein Nein, IMHO. (Es wird auf die Leistung auswirken, aber noch wichtiger ist, wird es mess up eine Menge anderer Funktionen, wie würde das Ergebnis in Knoten mit mehr als einem internen Pfad. Viele Modifikationen bauen auf identifizierende einen Seite der Knoten durch seine internen Pfad 'node/[nid]', und diese brechen würde mit diesem Ansatz!)Können Sie es mit Regeln auf Drupal 7. Dieses Modul: http://drupal.org/project/menu_rules fügt einige Aktionen zu Regeln. Einer von Ihnen ist, um einen Menübefehl erstellen, der für einen Knoten. Sie wählen:
Ereignis: ein Knoten erstellt | Update eines Knotens
Zustand: Content-Typ "den Inhaltstyp"
Aktion: Aktualisieren Sie den Menüpunkt Knoten (dort ist eine checkbox um Menüelement zu erstellen wenn es nicht vorhanden ist)
Gibt es auch die Menü-Position Modul, das erlaubt, Inhalte unter bestimmten Menü-Einträgen, je nach Typ des Inhalts, Ihrer Sprache und Taxonomie. Es hat auch eine kleine API zum hinzufügen weiterer Kriterien.
Sollten Sie einen Blick auf die Auto-Menü-Modul - während der Drupal 6-version ist noch eine dev-Version, es könnte Ihre Bedürfnisse abdecken. Wenn nicht, können Sie es als ein Beispiel für die Verwendung
menu_link_save()
zum erstellen einer eigenen Lösung.Würde ich auch für eine menu_link_save () - Aufruf. Zusammen mit dem Regelmodul, können Sie eine Aktion einrichten, wenn ein neuer Knoten gespeichert ist, erstellen Sie eine entsprechende Menüpunkt automatisch.
Möchten Sie vielleicht einen Blick auf das tutorial, ich schrieb vor einiger Zeit, die sich mit Programmgesteuertes erstellen von Menü-items mit menu_link_save() und Regeln: http://jan.tomka.name/blog/programmatically-creating-menu-items-drupal
Hier ist Fall, wo Sie dies tun können....
Ein Knoten Kampagne erstellen Menüpunkt "KAMPAGNE 001', wenn es erstellt wird. Mit default_menu_link
Jetzt ein weiteres content-Typ "Sub-Kampagne" erstellen eines Knotens, indem die Kampagne EntityRef so dem Menüpunkt sollte unter dem Menüpunkt Kampagne erstellt haben.
Dann eine benutzerdefinierte Funktion zu erstellen Menüpunkt
Bekommen die mlid des übergeordneten Knotens. Kampagne Knoten...
Dafür benötigen Sie menu_node
Dies ist ein einfaches problem, das leider die Drupal-community hat beschlossen, dass es machen will, kompliziert. Vergessen Sie all die hacky-Lösungen mit Regeln und Haken. Es gibt zwei Module, je nachdem, ob Sie auf Drupal 6 oder Drupal 7, das löst das problem sehr elegant. Davon rate ich eigentlich erstellen von Menü-Einträgen. Anstelle der beiden folgenden Module dynamisch Rendern des nodes in das Menü, so dass Sie Ihr Menü-editor, nicht gefüllt, mit tausenden von Knoten. Dann zum Beispiel, wenn Sie sich entscheiden, alle blog-posts werden verschoben von [Unser Blog], um [Über Uns]->[News] es ist nur eine mater mit der änderung einer Einstellung. Keine Aktualisierung tausenden von Knoten.
D6 Menü Trails
D7 Menü-Position
Es sieht aus wie es ein Drupal-Modul, das dies tut: Auto-Menü. Mehr details zu diesem Modul (von der Projekt-Seite):
Menü Ansichten ist ein Interessantes Modul für Drupal 7 automatisch generieren im Menü links. Es ermöglicht Ihnen, nutzen Sie die Kraft der Ansichten zu erstellen, Menü-links und kann verwendet werden out-of-the-box in Kombination mit Modulen wie Superfish und Schöne Menüs.
(PS: mein Ruf ist nicht hoch genug, um mehr als zwei links, daher habe ich markiert, die anderen Module Fett statt hyperlinks"), die