Gostaria de chamar a função menu_rebuild () , mas não tenho certeza de onde exatamente colar o trecho de código.
Não consigo encontrar o arquivo update.php em qualquer lugar da minha instância local.
A razão pela qual gostaria de tentar fazer isso é que excluí todos os nós, mas eles ainda estão aparecendo na estrutura do menu.
/var/www/htdocs/drupal
e modificá-lo é uma má ideia. Você poderia adicionar mais detalhes sobre por que deseja chamar menu_rebuild?Respostas:
Crie um arquivo com o seguinte conteúdo e simplesmente solte no diretório raiz do Drupal. Vamos dizer
menu-rebuild.php
. Execute-o http://example.com/menu-rebuild.phpfonte
Drupal 7
Se você estiver usando drush, poderá executar:
Se não funcionar, consulte: Como fazer a reconstrução do menu ao ter um erro fatal do PHP?
Drupal 6
memcached
Se você estiver usando o memcached, precisará reiniciá-lo.
No Linux:
/etc/init.d/memcached restart
No OS X (se estiver usando o Homebrew):
brew services restart memcached
fonte
Abra o esquema do banco de dados e exclua todo o conteúdo das tabelas menu_links e menu_router com as seguintes consultas SQL:
Em seguida, execute http://example.com/update.php . Ele chamará menu_rebuild (), que preencherá essas tabelas com dados 'novos'. Funcionou para mim depois que um "Erro fatal do PHP: falta de memória" transformou alguns dos meus menus em uma bagunça.
Mas lembre-se de que ele eliminará todos os menus personalizados que você precisará reconstruir manualmente. Para evitá-lo, você pode brincar um pouco com a exclusão de alguns registros selecionados de menu_router e menu_links, mas para mim não funcionou bem.
E não se esqueça de fazer backup do banco de dados e do diretório do site antes de excluir o conteúdo das tabelas.
fonte
Algumas maneiras diferentes:
menu_rebuild()
de hook_update_Ndrush cc menu
fonte
menu_cache_clear_all()
para reconstruir o cache de menuIr
admin/config/development/performance
e clicar no botão "Limpar todos os caches" fará com que o menu seja reconstruído, além de limpar o modelo, bloco, página, etc.fonte
A maneira alternativa é definir a variável:
variable_set('menu_rebuild_needed', TRUE);
Isso acionará o
menu_rebuild();
fonte
Para corrigir o menu do administrador, use o SQL e observe que, como Valk afirmou acima, removerá toda a personalização do menu de gerenciamento de administração. Depois de executá-lo, limpe seu cache e o menu de gerenciamento será reconstruído para as configurações padrão.
Aqui está a consulta SQL:
fonte