Mover un módulo de Drupal a otro directorio

En algunos casos es necesario tener que mover a otro directorio un módulo ya instalado en el Drupal.

Por poner algunos ejemplos:

  • Quieres tener todos los módulos que tienen algún patch aplicado en un directorio separado para facilitar el futuro mantenimiento
  • Quieres mover un módulo custom que pusiste por error en el directorio de módulos /contrib  (esto pasa bastante cuando heredas un proyecto que ha hecho otra agencia o freelance)
  • Has publicado en drupal.org un módulo que has hecho. Esto significa que ahora debería estar en el directorio /contrib y no en el /custom 
  • Convertir un Drupal que usa una distribución un un Drupal normal sin distribución
  • O cualquier caso que te haga mover algún módulo en un sitio donde no estaba antes.

En teoría, y según la documentación, basta con mover el código a su nuevo directorio y luego vaciar las caches.

Pero hay varios problemas a tener en cuenta:

  • Vaciar las cachés desde la UI de la web va a ser imposible. La web se rompe al no detectar el módulo. Por lo tanto estás obligado a vaciar las cachés desde la línea de comandos. Esto puede ser un problema para webs alojadas en hostings baratos donde no se tiene acceso SSH ni a Drush. Lo que obliga a hacer los cambios en local y resubir la base de datos
  • El Drush del servidor a veces está desactualizado y no elimina todas las cachés.

¿Entonces cúal es la forma correcta de hacerlo sin romper el sitio?

Has de mover el módulo a su nuevo directorio, y luego vaciar las caches con alguna de las siguientes formas:

  • Usar "drupal cr" en vez de "drush cr" (es el que mejor me ha funcionado a mi)
  • Usar el drush de dentro de vendor y no el del servidor. "./vendor/bin/drush cr"

¿Tienes algún proyecto en mente?

Si quieres hacer algo en Drupal tal vez puedas contratarme.

Ya sea para consultoría, desarrollo o mantenimiento de sitios web Drupal.