it-swarm.com.de

Menü Link Titel dynamisch ändern?

Ich versuche, den Text eines Menüelements basierend auf bestimmten Variablen dynamisch zu ändern.

Ich benutze hook_menu_alter wie folgt:

function mymodule_menu_alter(&$items) {
  $items['toggle-review-process']['title'] = 'asdf';
}

Das Problem ist, es macht nichts. Dieser Menüeintrag befindet sich dort, hat aber normalerweise keinen Titel, und das Hinzufügen der Taste führt zu nichts. Wie kann ich den Text dieses Menüpunkts dynamisch ändern?

5
Joren

Stellen Sie sicher, dass Sie auch verstehen, wie das Menüsystem funktioniert. Die Menüstruktur wird nur einmal erstellt, wenn der Cache geleert wird. In diesem Moment wird hook_menu_alter() aufgerufen. Die Ergebnisse werden dann in der Datenbank gespeichert. Die einfache Implementierung dieses Hooks reicht also nicht aus, um dynamische Menütitel zu erstellen. Sie können es jedoch verwenden, um einen Titelrückruf hinzuzufügen, der jedes Mal aufgerufen wird, wenn ein Link zum Menüelement gerendert wird. Weitere Informationen finden Sie unter http://drupal.org/node/140311 (D6, aber die grundlegende Logik gilt weiterhin für D7).

Von oben:

function mymodule_menu_alter(&$items) {
    $items['toggle-review-process']['title callback'] = 'mymodule_title_callback';
    $items['toggle-review-process']['title arguments'] = array(1, 'some string');
}

function mymodule_title_callback($arg1, $arg2) {
    $title = 'create the title';
    return $title;
}
3
berliner

Wenn es sich um ein Menüelement handelt, das Sie in hook_menu() definiert haben, können Sie einfach eine title callback - Deklaration und gegebenenfalls title arguments Hinzufügen, um es zu übergeben.

Wenn der Menüpunkt an einer anderen Stelle erstellt wurde, können Sie mit der Implementierung von hook_preprocess() den Menütext über das Mammut-Array $variables Ändern.

Dies funktioniert nur für Menüelemente auf nicht zwischengespeicherten Seiten. Andernfalls wird der erste angezeigte Titel zusammen mit der Seite zwischengespeichert.

2
scronide

Zum Erstellen/Ändern eines dynamischen Menüs können Sie das Modul Menu Token verwenden.

Das Menü-Token-Modul bietet Token, die im Titel oder im Pfad von Menüelementen (Links) verwendet werden können. Wenn Sie beispielsweise einen Menüpunkt mit dem Pfad "Benutzer/[aktueller Benutzer: UID]" erstellen, wird die URL "on fly" in "Benutzer/1" geändert (vorausgesetzt, Sie sind Benutzer 1).

Es ist abhängig vom Modul Token .

1
user12068