Chciałbym wywołać funkcję menu_rebuild () , ale nie jestem pewien, gdzie dokładnie wkleić fragment kodu.
Nie mogę znaleźć pliku update.php nigdzie w mojej lokalnej instancji.
Powodem, dla którego chciałbym to zrobić, jest usunięcie wszystkich węzłów, ale nadal pojawiają się one w strukturze menu.
/var/www/htdocs/drupal
a modyfikowanie go to zły pomysł. Czy możesz dodać więcej szczegółów, dlaczego chcesz zadzwonić do menu_rebuild?Odpowiedzi:
Utwórz plik o następującej treści i po prostu upuść go w katalogu głównym Drupal. Powiedzmy Spójrzmy prawdzie
menu-rebuild.php
. Uruchom http://example.com/menu-rebuild.phpźródło
Drupal 7
Jeśli używasz drush, możesz uruchomić:
Jeśli nie zadziała, zobacz: Jak wykonać przebudowę menu, gdy wystąpił błąd krytyczny PHP?
Drupal 6
memcached
Jeśli używasz memcached, musisz go ponownie uruchomić.
W systemie Linux:
/etc/init.d/memcached restart
W systemie OS X (jeśli używasz Homebrew):
brew services restart memcached
źródło
Otwórz schemat bazy danych, a następnie usuń całą zawartość tabel menu_links i menu_router za pomocą następujących zapytań SQL:
Następnie uruchom http://example.com/update.php . Wywoła menu_rebuild (), które zapełni te tabele „świeżymi” danymi. Zadziałało to po tym, jak „Błąd krytyczny PHP: brak pamięci” zamienił niektóre moje menu w bałagan.
Pamiętaj jednak, że usunie wszystkie niestandardowe menu, które będziesz musiał ręcznie odbudować. Aby tego uniknąć, możesz trochę pograć z usunięciem niektórych wybranych rekordów z menu_router i menu_links, ale dla mnie to nie działało dobrze.
I nie zapomnij wykonać kopii zapasowej bazy danych i katalogu witryny przed usunięciem zawartości z tabel.
źródło
Kilka różnych sposobów:
menu_rebuild()
z hook_update_Ndrush cc menu
źródło
menu_cache_clear_all()
aby odbudować pamięć podręczną menuPrzejście do
admin/config/development/performance
i kliknięcie przycisku „Wyczyść wszystkie pamięci podręczne” spowoduje przebudowanie menu, a także wyczyszczenie pamięci podręcznej szablonów, bloków, stron itp.źródło
Alternatywnym sposobem jest ustawienie zmiennej:
variable_set('menu_rebuild_needed', TRUE);
Spowoduje to uruchomienie
menu_rebuild();
źródło
Aby naprawić menu administratora, użyj SQL i zauważ, że jak podano powyżej Valk, usunie wszystkie dostosowania z menu zarządzania administracyjnego. Po uruchomieniu wyczyść pamięć podręczną i menu zarządzania zostanie przywrócone do ustawień domyślnych.
Oto zapytanie SQL:
źródło