Me gustaría llamar a la función menu_rebuild () , pero no estoy seguro de dónde pegar exactamente el fragmento de código.
No puedo encontrar el archivo update.php en ninguna parte de mi instancia local.
La razón por la que me gustaría intentar esto es porque eliminé todos los nodos, pero todavía aparecen debajo de la estructura del menú.
/var/www/htdocs/drupal
y modificarlo es una mala idea. ¿Podría agregar más detalles sobre por qué desea llamar a menu_rebuild?Respuestas:
Cree un archivo con el siguiente contenido y simplemente colóquelo en el directorio raíz de Drupal. Digamos Vamos
menu-rebuild.php
. Ejecútelo http://example.com/menu-rebuild.phpfuente
Drupal 7
Si está usando drush, puede ejecutar:
Si no funciona, vea: ¿Cómo hacer la reconstrucción del menú cuando se produce un error grave de PHP?
Drupal 6
memcached
Si está utilizando memcached, debe reiniciarlo.
En Linux:
/etc/init.d/memcached restart
En OS X (si usa Homebrew):
brew services restart memcached
fuente
Abra el esquema de la base de datos, luego elimine todo el contenido de las tablas menu_links y menu_router con las siguientes consultas SQL:
Luego ejecute http://example.com/update.php . Llamará a menu_rebuild (), que completará estas tablas con datos 'frescos'. Funcionó para mí después de que un "Error fatal de PHP: sin memoria" convirtió algunos de mis menús en un desastre.
Pero tenga en cuenta que eliminará todos los menús personalizados que deberá reconstruir manualmente. Para evitarlo, puede jugar un poco con la eliminación de algunos registros seleccionados de menu_router y menu_links, pero para mí no funcionó bien.
Y no olvide hacer una copia de seguridad de la base de datos y el directorio del sitio antes de eliminar el contenido de las tablas.
fuente
Un par de formas diferentes:
menu_rebuild()
desde hook_update_Ndrush cc menu
fuente
menu_cache_clear_all()
para reconstruir el caché del menúIr
admin/config/development/performance
y hacer clic en el botón "Borrar todas las cachés" hará que se reconstruya el menú, así como borrar la caché de plantilla, bloque, página, etc.fuente
Una forma alternativa es establecer variables:
variable_set('menu_rebuild_needed', TRUE);
Esto activará el
menu_rebuild();
fuente
Para corregir el uso del menú de administración en SQL y tenga en cuenta que, como Valk indicó anteriormente, eliminará toda la personalización de su menú de administración de administración. Después de ejecutarlo, borre su caché y el menú de administración se reconstruirá a su configuración predeterminada.
Aquí está la consulta SQL:
fuente