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.