Je voudrais appeler la fonction menu_rebuild () , mais je ne sais pas exactement où coller l'extrait de code.
Je ne trouve le fichier update.php nulle part dans mon instance locale.
La raison pour laquelle j'aimerais essayer est que j'ai supprimé tous les nœuds, mais ils apparaissent toujours sous la structure du menu.
/var/www/htdocs/drupal
que la modifier est une mauvaise idée. Pourriez-vous ajouter plus de détails sur la raison pour laquelle vous souhaitez appeler menu_rebuild?Réponses:
Créez un fichier avec le contenu suivant et déposez simplement dans le répertoire racine Drupal. Disons
menu-rebuild.php
. Exécutez-le http://example.com/menu-rebuild.phpla source
Drupal 7
Si vous utilisez drush, vous pouvez exécuter:
Si cela ne fonctionne pas, voir: Comment reconstruire le menu en cas d'erreur fatale PHP?
Drupal 6
memcached
Si vous utilisez memcached, vous devez le redémarrer.
Sous Linux:
/etc/init.d/memcached restart
Sous OS X (si vous utilisez Homebrew):
brew services restart memcached
la source
Ouvrez le schéma de base de données, puis supprimez tout le contenu des tables menu_links et menu_router avec les requêtes SQL suivantes:
Exécutez ensuite http://example.com/update.php . Il appellera menu_rebuild (), qui remplira ces tables de données «fraîches». Cela a fonctionné pour moi après qu'une "erreur fatale PHP: mémoire insuffisante" ait transformé certains de mes menus en désordre.
Mais sachez qu'il effacera tous vos menus personnalisés que vous devrez reconstruire manuellement. Pour l'éviter, vous pouvez jouer un peu en supprimant certains enregistrements sélectionnés de menu_router et menu_links, mais pour moi, cela n'a pas bien fonctionné.
Et n'oubliez pas de sauvegarder votre base de données et votre répertoire de site avant de supprimer le contenu des tables.
la source
Deux façons différentes:
menu_rebuild()
de hook_update_Ndrush cc menu
la source
menu_cache_clear_all()
pour reconstruire le cache du menuSi vous
admin/config/development/performance
cliquez sur le bouton "Effacer tous les caches" et que vous cliquez dessus, le menu sera reconstruit, ainsi que le cache du modèle, du bloc, de la page, etc.la source
Une autre méthode consiste à définir une variable:
variable_set('menu_rebuild_needed', TRUE);
Cela déclenchera la
menu_rebuild();
la source
Pour corriger l'utilisation du menu d'administration dans SQL et notez que, comme Valk l'a indiqué ci-dessus, il supprimera toute personnalisation de votre menu de gestion d'administration. Une fois que vous l'avez exécuté, effacez votre cache et le menu de gestion sera reconstruit à ses paramètres par défaut.
Voici la requête SQL:
la source