it-swarm.com.de

Wie rufe ich die Funktion menu_rebuild in Drupal 7) auf?

Ich möchte die Funktion menu_rebuild () aufrufen, bin mir aber nicht sicher, wo genau das Code-Snippet eingefügt werden soll.

Ich kann die Datei pdate.php nirgendwo in meiner lokalen Instanz finden.

Der Grund, warum ich dies versuchen möchte, ist, dass ich alle Knoten gelöscht habe, sie aber immer noch unter der Menüstruktur angezeigt werden.

13
user12804

Erstellen Sie eine Datei mit dem folgenden Inhalt und legen Sie sie einfach im Stammverzeichnis Drupal) ab. Sagen wir menu-rebuild.php. Führen Sie es aus http://example.com/menu-rebuild.php

<?php
error_reporting(E_ALL);
define('DRUPAL_ROOT', getcwd());
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);

menu_rebuild();
5
Sithu

Drupal 7

Wenn Sie Drush verwenden, können Sie Folgendes ausführen:

drush eval 'menu_rebuild();'

Wenn dies nicht funktioniert, lesen Sie: So führen Sie eine Menüwiederherstellung durch, wenn PHP Schwerwiegender Fehler?

Drupal 6

drush php-eval 'drupal_rebuild_theme_registry()'

memcached

Wenn Sie memcached verwenden, müssen Sie es neu starten.

Unter Linux: /etc/init.d/memcached restart

Unter OS X (bei Verwendung von Homebrew): brew services restart memcached

15
kenorb

Öffnen Sie das Datenbankschema und löschen Sie den gesamten Inhalt der Tabellen menu_links und menu_router mit den folgenden SQL-Abfragen:

DELETE FROM menu_links;
DELETE FROM menu_router;

Führen Sie dann http://example.com/update.php aus. Es wird menu_rebuild () aufgerufen, das diese Tabellen mit 'frischen' Daten füllt. Es funktionierte für mich, nachdem ein "PHP Fatal Error: Out of Memory" einige meiner Menüs in ein Chaos verwandelt hatte.

Beachten Sie jedoch, dass alle benutzerdefinierten Menüs gelöscht werden, die Sie manuell neu erstellen müssen. Um dies zu vermeiden, können Sie ein wenig mit dem Löschen einiger ausgewählter Datensätze aus menu_router und menu_links spielen, aber für mich hat es nicht gut funktioniert.

Vergessen Sie nicht, Ihre Datenbank und Ihr Site-Verzeichnis zu sichern, bevor Sie Inhalte aus den Tabellen löschen.

11
Valk

Ein paar verschiedene Möglichkeiten:

  1. Rufen Sie menu_rebuild() von hook_update_N auf
  2. Bearbeiten und speichern Sie ein Menüeinstellungsformular von Drupal admin.
  3. Von der Kommandozeile aus mit drush: drush cc menu
3
David Thomas

Alternativ können Sie die Variable festlegen:

variable_set('menu_rebuild_needed', TRUE);

Dies löst die menu_rebuild(); aus

2

Ich gehe zu admin/config/development/performance und Klicken auf die Schaltfläche "Alle Caches löschen" bewirkt, dass das Menü neu erstellt wird und der Cache für Vorlagen, Blöcke, Seiten usw. gelöscht wird.

2
penten

Um das Admin-Menü zu reparieren, verwenden Sie es in SQL und beachten Sie, dass, wie oben angegeben, alle Anpassungen aus Ihrem Administrationsverwaltungsmenü entfernt werden. Nachdem Sie es ausgeführt haben, löschen Sie Ihren Cache und das Verwaltungsmenü wird auf die Standardeinstellungen zurückgesetzt.

Hier ist die SQL-Abfrage:

DELETE FROM menu_links WHERE menu_name='management' 
0
user28323