Wie kann man Drupal-Menüs vollständig löschen und neu erstellen?

9

Vor einiger Zeit fand ich einen coolen Blog-Beitrag, in dem detailliert beschrieben wurde, wie die Menütabellen geleert und das Menüsystem mit einem drush-PHP-Aufruf neu erstellt werden. Dies ist eine Notwendigkeit, da die Site nach dem Leeren dieser MySQL-Tabellen unbrauchbar wird. Auf diese Weise können Sie Ihre Menüs zurücksetzen, als wäre es eine neue Drupal-Site.

Kann jemand diese Technik detaillieren oder haben Sie den Link für diesen Blog?

giorgio79
quelle
Sprechen Sie über das Löschen des Menü-Cache?
Anil Sagar
Nein, das Reinigen des Menü-Cache reicht nicht aus, um ein verstümmeltes Menü zu reparieren. Manchmal werden Menüs durcheinander gebracht. Besonders das Administrationsmenü.
Giorgio79
Warum die -1? Das ist eine berechtigte Frage. + 1'ing entgegenzuwirken.
Aendrew
Wie wurden diese Menüs erstellt? Ich frage, denn wenn sie von einem Modul erstellt wurden, können Sie das Modul deaktivieren. Das sollte störende Menüpunkte entfernen. Wenn Sie diese aus der Datenbank entfernen und Code zum Erstellen noch vorhanden ist, werden sie möglicherweise erneut angezeigt.
Rick

Antworten:

6

Ich habe eine Weile nach einer Lösung für das Problem gesucht, Drupal-Menüs neu zu erstellen, bis ich auf ein Drupal-Problem stieß , das mir half. Meine Lösung (in einem PHP-Skript) ist die folgende:

db_query("DELETE FROM {menu_links} WHERE module = 'system'");
db_query("DELETE FROM {menu_links} WHERE menu_name = 'management'");
menu_rebuild();

Dies kann auch durch Eingabe der Abfragen über phpmyadmin oder ähnliches geschehen:

DELETE FROM {menu_links} WHERE module = 'system'
DELETE FROM {menu_links} WHERE menu_name = 'management'

Und dann die Menüstruktur neu erstellen. Wenn Sie das Entwicklungsmodul verwenden, können Sie dies erreichen, indem Sie die Seite besuchen /devel/menu/reset. Wenn Sie das Entwicklungsmodul nicht haben, bin ich mir nicht sicher, wie ich die Menüstruktur neu erstellen soll.

Vergessen Sie nicht, Ihre Datenbank zu sichern, bevor Sie dies versuchen.

Yan
quelle