Je voudrais appeler la fonction menu_rebuild () , mais je ne sais pas où coller exactement l'extrait de code.
Je ne trouve le fichier pdate.php nulle part dans mon instance locale.
La raison pour laquelle je voudrais tenter cela est que j'ai supprimé tous les nœuds, mais ils apparaissent toujours sous la structure du menu.
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.php
<?php
error_reporting(E_ALL);
define('DRUPAL_ROOT', getcwd());
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
menu_rebuild();
Drupal 7
Si vous utilisez drush, vous pouvez exécuter:
drush eval 'menu_rebuild();'
Si cela ne fonctionne pas, voir: Comment faire la reconstruction du menu en ayant PHP Erreur fatale?
Drupal 6
drush php-eval 'drupal_rebuild_theme_registry()'
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
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:
DELETE FROM menu_links;
DELETE FROM menu_router;
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.
Deux façons différentes:
menu_rebuild()
depuis hook_update_Ndrush cc menu
Une autre méthode consiste à définir une variable:
variable_set('menu_rebuild_needed', TRUE);
Cela déclenchera la menu_rebuild();
Aller à admin/config/development/performance
et en cliquant sur le bouton "Effacer tous les caches", le menu sera reconstruit, ainsi que le cache du modèle, du bloc, de la page, etc.
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:
DELETE FROM menu_links WHERE menu_name='management'