Ich versuche, diesen Hook zu verwenden, um einen Breadcrumb-Link zu ändern:
hook_menu_breadcrumb_alter(&$active_trail, $item)
Der Haken scheint nicht genannt zu werden.
Ich habe es versucht :
- Verwenden des Hakens für ein Thema
- Verwenden des Hooks in einem benutzerdefinierten Modul (breadcrumb_finder_fix)
- Löschen Sie alle Caches mit Drush
Ich habe das Devel-Modul installiert und aktiviert und das Folgende erzeugt keine Ausgabe.
function breadcrumb_finder_fix_menu_breadcrumb_alter(&$active_trail, $item) {
drupal_set_message(krumo($active_trail));
}
Irgendwelche Ideen ? Richtungen ? Bitte beraten.
OBS: Ich habe diese Antwort gelesen: /drupal//a/7659/12647
7
hooks
breadcrumbs
Jean-Michel Garcia
quelle
quelle
Antworten:
Hier ist ein Ausschnitt, der zeigt, wie Sie Semmelbrösel ändern können.
Beachten Sie Folgendes:
Fügen Sie dieses Snippet zur template.php-Datei Ihres Themas hinzu.
quelle
Wahrscheinlich etwas spät, um zu antworten, aber ich bin heute Morgen auf diesen Thread gestoßen, als ich nach einer Möglichkeit gesucht habe, den Breadcrumb in Drupal 7 zu überschreiben. Es hat ein wenig geholfen, also dachte ich, ich würde meine Lösung hinzufügen.
Dadurch werden basierend auf den Inhaltstypen zusätzliche Krümel erstellt, und die aktuelle Seite wird dem Krümel hinzugefügt. Ich verwende dies, um einer Filteransicht, die vor dem angegebenen Knoten angezeigt wird, einen Krümel hinzuzufügen.
quelle
hook_menu_breadcrumb_alter () funktioniert nicht auf Seiten, auf denen zuvor drupal_set_breadcrumb () aufgerufen wurde.
hook_menu_breadcrumb_alter () wird von menu_get_active_breadcrumb () aufgerufen . Dies wird von drupal_get_breadcrumb () aufgerufen , aber nur, wenn zuvor mit drupal_set_breadcrumb () kein Breadcrumb gesetzt wurde .
Es sieht nicht so aus, als würde drupal_set_breadcrumb () von der Benutzerseite aufgerufen. Aber vielleicht gibt es ein Contrib-Modul, das das macht. Sie können dpm () oder ddebug_backtrace () in drupal_set_breadcrumb () einfügen, um festzustellen, ob dies der Fall ist (das Entwicklungsmodul muss aktiviert sein und Sie haben die Berechtigung, Entwicklungsinformationen anzuzeigen).
Sie können stattdessen hook_preprocess_breadcrumb () verwenden. Dazu müssen Sie jedoch den zu ändernden Breadcrumb-Link analysieren. Da in diesem Hook die Breadcrumb-Links bereits als HTML gerendert sind, benötigen Sie reguläre Ausdrücke (preg_match ()) oder ähnliches, um zB die URL zu bestimmen.
Eine viel bessere Lösung ist die Verwendung eines der verschiedenen Breadcrumb-Customizing-Module , die für Drupal verfügbar sind.
quelle
Dies ist möglicherweise nicht der effizienteste Weg, aber versuchen Sie Folgendes:
function THEME_breadcrumb($variables)
und dann lesen Sie die Variablen.
... auch mein Gott, ich hasse Semmelbrösel. so viel.
quelle
Wenn Sie nur den Breadcrumb auf einer bestimmten Seite ändern müssen, hilft Ihnen möglicherweise die folgende Lösung. In diesem Beispiel wird der Breadcrumb für ein Bearbeitungsformular aktualisiert.
Eine andere Drupal-Methode ist der Benutzer,
hook_menu_breadcrumb_alter
aber stellen Sie sicher, dass Sie ihn benennenYOUR_MODULE_menu_breadcrumb_alter
und den Cache leeren, nachdem Sie die Funktion hinzugefügt haben.Oder
theme_breadcrumb
ist auch eine Drupal-Methode zum Aktualisieren des Breadcrumb, aber in diesem Hook sollten Sie nur das Markup des Breadcrumb ändern, keine Links.quelle
das
THEME_NAME_breadcrumb
hat bei mir nicht geklappt. Allerdings habe ich es geschafft, Breadcrumb mit dieser Funktion zu überschreiben:Gutschrift geht an: /programming/10087168/how-to-add-breadcrumb
quelle
function MODULE_menu_breadcrumb_alter (& $ active_trail, $ item) {
}
So viel Code reicht aus, um die Breadcrumb-URL zu ändern.
quelle