Generar módulo personalizado usando Drush
Hoy en día, Drupal sigue siendo una de las mejores alternativas disponibles en el mercado tecnológico, para la creación de cualquier tipo de proyecto, que esté relacionado con el desarrollo de aplicaciones y/o páginas web; gracias a que, a partir de la versión 8, Drupal comenzó a utilizar Symfony como parte central de su estructura, añadiendo con esto el motor de plantillas Twig, apliando considerablemente su potencia, capacidad de escalabilidad y versatilidad, para cumplir con la mayoría de los requerimientos ante cualquier reto.
La leyenda urbana alrededor de Drupal
Como suele ocurrir con cualquier tipo de lenguaje de programación o herramienta tecnológica, existen grupos de profesionales del desarrollo web, que mantienen una postura en favor y en contra de trabajar con Drupal, por diversos motivos, y uno de los más extendidos, es su curva de aprendizaje. Por esta razón, muchos eligen aprender a implementar otros sistemas, "más populares, pero no mejores", ya que les permite acceder al mercado laboral, de manera más rápida.
Por este motivo, en www.drupaladictos.com, queremos ayudarte a que compruebes, por tus propios medios, que puedes llegar a convertirte en Drupaladicto, una vez comiences a conocerlo, experimentar con él y a sugerir a tus posibles clientes, que esta debería ser su primera opción, antes de invertir tiempo en un desarrollo, que podría terminar migrándose, o reconstruyéndose a largo plazo.
Como generar módulos personalizados con Drush
Según la página oficial de Drush : "Drush es un shell de línea de comandos y una interfaz de scripting Unix para Drupal. Drush core se envía con muchos comandos y generadores útiles. De manera similar, ejecuta update.php, ejecuta consultas SQL, ejecuta migraciones de contenido y utilidades diversas como cron o reconstrucción de caché. Drush se puede ampliar con archivos de comandos de terceros". fuente https://www.drush.org/12.x/
Esto significa, que ya no es construir toda la estructura, desde cero, cuando estemos diseñando nuestros módulos personalizados, para ampliar o añadir funcionalidades dentro de nuestros proyectos de Drupal; así que ahora te mostraré todos los pasos necesarios, para que, a partir de ahora, puedas ganar tiempo en tus desarrollos, centrándote en otros aspectos, en lugar del montaje inicial.
Requisitos:
- Tener acceso a la consola, para ejecutar los comandos
- Tener funcionando tu proyecto de Drupal 10
- Tener instalada la versión más reciente de Drush
composer require drush/drush -W
Pasos para generar un módulo personalizado
Antes de comenzar a ejecutar comandos de Drush, lo recomendable será asegurarnos de que tenemos disponibles dichos comandos, para ello, abriremos la consola y nos colocaremos en la carpeta raíz de Drupal, y a continuación, ejecutaremos el comando que nos devolverá el listado de opciones disponibles en nuestra versión de drush:
drush
o
vendor/bin/drush
Deberíamos ver en pantalla el listado completo, donde nos aseguraremos de encontrar el comando gen
Paso 1 - Generar una estructura básica y activar el módulo
Si estamos planeando desarrollar un módulo personalizado, lo primero que debemos hacer es generar la estructura base para este módulo; para ello sólo necesitaremos la carpeta principal donde se guardarán todos los archivos del módulo, y dentro de ella, el archivo que identifica y define sus características principales; este archivo se llamará NUESTRO_MODULO.info.
Los principales datos que se definen dentro de este archivo serán: nombre, descripción, tipo, paquete al que pertence, versión de Drupal.
Para generar el archivo y la carpeta con el nombre de nuestro módulo, abriremos nuestra consola, nos colocaremos en la carpeta raíz de Drupal y a continuación, ejecutaremos el comando gen, con la siguiente opción:
drush gen module
En seguida, se mostrarán en pantalla, varias preguntas, que iremos completando, con los datos de nuestro módulo personalizado.
Paso 2 - Activación del módulo
Una vez hayamos terminado con las preguntas de la pantalla anterior, podremos activar nuestro módulo, que todavía no nos mostará nada en pantalla, ya que no tiene ningún controlador, pero sí tendremos constancia de que Drupal lo reconoce y que tendremos vía libre, para seguir añadiendo funcionalidades, a partir de este momento.
Para activar el módulo, podremos hacerlo desde la interfaz o desde la consola, utilizando el comando de drush:
drush en mi_modulo_personalizado
Paso 3 - Generar nuestra primera página
Ahora es el momento de hacer que nuestro módulo, muestre algo en pantalla, para ello, generaremos un controlador o Controller, que es la clase de php, encargada de esta tarea. Para que podamos acceder a una url específica y ver el contenido de esta página, además del Controller, necesitaremos el archivo routing.yml, donde se definen las diferentes rutas y ubicación de cada controlador en nuestro módulo.
Podremos indicar a Drush, que añada el nuevo controlador dentro del módulo que acabamos de generar, para ello, nos hará falta especificar el nombre del módulo, y a continuación, responder a cada pregunta que se mostrará en pantalla durante este nuevo proceso. El comando que tendremos que utilizar será:
drush gen controller
Esta vez, al terminar de contestar todas las preguntas, podrás comprobar que se han añadido varios arhivos, además de las carpetas src y Controller, dentro de esta última encontrarás la nueva clase NombreModuloContoller.php, con un método encargado de imprimir en pantalla un mensaje de confirmación.
Para comprobar que puedes acceder a tu nueva página, deberás borrar la caché de Drupal y, luego, copiar la url, que encontrarás en la segunda línea del archivo modulo_personalizado.routing.yml
Paso 4 - Añadir una plantilla a la página
El último paso, en esta fase inicial de nuestro módulo, consistirá en añadir una plantilla twig, que nos permitirá entre otras opciones, pasar valores e imprimirlos en la página, añadir un formulario, mostrar datos desde nuestra base de datos, etc.
Por ahora, nos enfocaremos en generar esta nueva plantilla y realizar los ajustes, para conectarla con nuestro módulo y se puedan imprimir en pantalla, los valores por defecto, sustituyendo el mensaje inicial del controlador.
Al igual que en el paso anterior, ejecutaremos el comando gen seguido de la opción template y en la primera pregunta, especificaremos el nombre de nuestro módulo, y contestaremos al resto de preguntas, hasta terminar el proceso.
drush gen template
Al terminar el proceso, veremos que se han añadido el archivo .module, la carpeta templates, nueva-plantilla.twig.
Por último, para imprimir los valores de nuestra plantilla, en la página generada por nuestro Controller, añadiremos dentro del método el atributo siguiente:
'#theme' => 'mi_plantilla',
Luego refrescaremos el cache de Drupal nuevamente, y podremos comprobar que se imprime el valor de la variable incluida en el hook_theme, que se generó al crear la plantilla con Drush.