Brauche ich, um einen Menübefehl erstellen, der ändert seinen Titel und link, wenn ein Nutzer eine bestimmte Bedingung, oder nicht.
Drupal caches alle Menüs, so kann ich ' T wirklich denken Sie an einen Weg, das zu tun.
Z.B. Benutzer hat einen Knoten an seinem Profil, Menüpunkt "Erstellen blabla" (link node/add/blabla)
Benutzer nicht über den Knoten, Menüpunkt "Erstellen notblablabla" (link node/add/notblabla)
Die beste und einfachste Weg ist die Verwendung
hook_menu
mit paramtitle_callback
.Sehen thedrupalblog.com und drupal.org.
Drupal lässt sich nicht für dynamische Menüpunkte, aber es verbergen sich einige Menüpunkte, wenn der Benutzer nicht erlaubt, dorthin zu gehen. Bezogen auf dein Beispiel, wenn Sie erstellen sowohl die links und verwenden Sie die Berechtigung " system zu beschränken, die Schaffung von denen die node-Typen, um bestimmte Rollen, Drupal zeigt nur die Menüpunkte, wenn der Benutzer die gewünschte Rolle. Vielleicht hilft in deiner situation.
Andere Optionen sind:
Einen einfachen Weg, dies zu tun, wäre die Verwendung von JavaScript. Sie können dies ändern, HTML, ohne viel efford mithilfe von jQuery. Diese verlangen, dass Ihre Nutzer hat JS aktiviert, so ist es nicht eine perfekte Lösung.
Eine andere Möglichkeit wäre es, einen einzigen Menüpunkt, der mit einer url verknüpft, die Sie erstellt in einem Modul. Er Sie tun konnte, die Bedingung überprüfen, die eine Umleitung der Benutzer auf welcher url er umgeleitet werden sollen. Das einzige problem bei dieser Methode wäre, dass die änderung der Bezeichnung des Menüpunktes. Aber Sie könnten in der Lage sein zu geben, eine passende Beschreibung für beide Fälle. Sie könnte auch mit JS ändern Sie den Namen der Verknüpfung. So würden Sie halten den Funktionen intakt, ohne JS aber die Verbesserung der Benutzeroberfläche für Benutzer mit es aktiviert.
Ich würde wahrscheinlich erstellen Sie zwei Menüpunkte, und verwenden Sie die theme system zu verstecken, der eine oder andere auf der Grundlage der Bedingung.
Es ist schon eine Weile her, aber ich würde schauen:
Seit diesem Menüpunkt zu sein scheint, basiert auf user-Profil-Informationen, würde ich vorschlagen, schreiben einen einfachen Modul implementiert, dass
hook_menu_alter()
ändern, um das Menü basierend auf Ihren Zustand. Sie können dann rufenmenu_cache_clear()
innenhook_user()
Erneuerung der Menü-cache, wenn der Benutzer-Profil-änderungen.Haben Sie versucht, diese (zum einfügen Ihrer anderen Bedingungen in der if-Anweisung natürlich auch):
Werden Sie wahrscheinlich auch haben, dies zu tun, markieren Sie den link als veränderbar: