backend

Módulo personalizado en Drupal 9 (Parte 3)

Video de Youtube
URL de Video remoto
Texto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

Cómo crear un módulo en Drupal 9 (3ra Parte)

Para completar nuestro pequeño tutorial sobre Cómo crear un módulo en Drupal 9, sólo nos falta saber cómo añadir un enlace desde el menú principal para que los usuarios puedan navegar hasta el contenido de nuestro módulo e interactuar con él.

Por último veremos cómo configurar permisos para restringir el acceso y así podremos decidir, qué tipo de usuarios podrán ver, editar o administrar el contenido relacionado con nuestro módulo.

Antes de continuar, te recomiendo que leas Cómo crear un módulo en Drupal 9, para que puedas realizar el proceso paso a paso y entender en qué consiste y de esta manera, a medida que avances, acumularás la experiencia y conocimientos necesarios, que te ayudarán en el desarrollo de módulos y funcionalidades más avanzadas para tus proyectos en Drupal 9.

 

Si ya lo tienes, vamos a empezar...

En esta ocasión, vamos a añadir un enlace, en el menú principal de la web, que apuntará a la página del controlador con la cual estuvimos trabajando en el anterior artículo, si todavía no lo haz leído, aquí lo tienes Cómo crear un módulo en Drupal 9 (2da Parte), si ya lo haz hecho, recordarás que la url de la que hablamos, es la que pusimos dentro del mi_modulo.routing.yml, en el apartado de "path", en mi caso esta url de la página es "/mypage", pero tú puedes poner la que quieras.

Ahora, nos toca crear un nuevo archivo, al que llamaremos mi_modulo.links.menu.yml y dentro colocaremos el siguiente contenido, recuerda respetar los espacios y no utilices el tabulador; en su lugar, utiliza la barra espaciadora y deja dos espacios, en los casos necesarios, contando a partir del margen izquierdo.

mi_modulo.mynewpage:
  title: 'My Page'
  description: 'Page Created with MyModule'
  route_name: mymodule.mypage
  weight: 10
  menu_name: main

A continuación te explico cada parte del archivo para que puedas entenderlo y hacer los cambios necesarios y adaptarlos a tu propio módulo:

mi_modulo.mynewpage:

En esta primera línea, hemos utilizado el nombre de nuestro módulo, esto se recomienda para evitar conflictos con otros módulos existentes, y luego está el nombre con que el que idenficaremos este comportamiento .mynewpage: , presta mucha atención en los detalles, en la primera línea no hemos dejado ningún espacio a la izquierda y tenemos los dos puntos al final.

  title: 'My Page'
  description: 'Page Created with MyModule'

Las dos líneas siguientes, simplemente indican el nombre que aparecerá en el botón del menú y un texto descriptivo, que se mostrará al colocarnos encima de dicho botón. Haz visto que a partir de aquí, siempre mantenemos dos espacios con respecto al margen izquierdo de la página. Si por error, sobra o falta un espacio, el archivo no funcionará.

  route_name: mymodule.mypage

Seguro que en esta línea, hay algo que te suena haber visto anteriormente, si es así, felicidades por prestar atención a los detalles, me refiero al nombre de la ruta, el que definimos en la primera línea del archivo mi_modulo.routing.yml, con ello indicamos a Drupal, que al hacer clic en el elemento del menú correspondiente, deberá buscar esta ruta y mostrar los contenidos definidos en dicho archivo.

  weight: 10
  menu_name: main

Para finalizar, indicamos la posición del enlace con respecto a otros elementos del menú utilizando el "weight" o peso; los elementos del menú cuentan a partir de la posición Cero y tendrán valores positivos o negativos, correspondientes a si estarán debajo o encima del elemento cuyo "weight" o peso equivale a Cero.

En la última línea, indicamos el Menú Padre "main", para nuestro enlace, como dijimos al principio, en este caso, el botón para este módulo personalizado, estará dentro del menú principal.

Ahora vamos a echar un vistazo a los permisos del módulo

Una de las ventajas que ofrece el desarrollo de webs utilizando CMS o gestores como Drupal, es la capacidad para gestionar usuarios y restringir sus accesos, según creamos conveniente.

Para añadir permisos específicos en nuestro módulo personalizado, tendremos que crear un archivo, al que, en este ejemplo, llamaremos mi_modulo.permissions.yml y lo siguiente que haremos es añadir estas líneas: 

view mymodule:
  title: 'Ver contenido'
  description: 'El usuario puede ver el contenido relacionado con el módulo'
access mymodule:
  title: 'Acceder a contenido restringido'
  description: 'El usuario con este permiso podrá ver contenido restringido'
administer mymodule:
  title: 'Administrar el módulo'
  description: 'Sólo los administradores podrán modificar la configuración del módulo'
  restrict access: TRUE

Si ya conoces el apartado de Drupal, donde puedes gestionar los permisos para los usuarios, o sea la url que te lleva será algo como "http://drupal9composer.localhost/admin/people/permissions", una vez creado este nuevo archivo, al vaciar las cachés, podrás comprobar que los nuevos permisos se han añadido al listado y que estarán para activarlos según el rol que desees.

Custom Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Un último apunte, para que tus permisos tengan efecto deberás modificar la última línea del mi_modulo.rounting.yml y cambiar el "access content", por el nombre del permiso que desees aplicar, ejemplo (access mymodule), te dejo una imagen para que lo veas mejor.

Custom Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Espero haberte ayudado a comprender un poco más sobre Drupal y que puedas crear o trabajar en grandes proyectos donde poner a prueba tus conocimientos, experiencias y ganas de superación.

¡Hasta la próxima y buena suerte!

 

Módulo personalizado en Drupal 9 (Parte 2)

Video de Youtube
URL de Video remoto
Texto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

Cómo crear un módulo en Drupal 9 (2da Parte)

Siguiendo con el desarrollo de nuestro módulo personalizado, hoy trataré de explicarte qué es el controlador o Contoller, para qué nos sirve y cómo podemos añadirlo a nuestro módulo personalizado.

Si todavía no haz creado tu módulo personalizado, antes de continuar leyendo, te recomiendo que primero leas Cómo crear un módulo en Drupal 9 (1era Parte), sigue los pasos y cuando tengas el módulo funcionando, vuelve aquí para que puedas seguir ampliándolo y entendiendo el proceso de desarrollo.

Una de las estructuras o formas de desarrollo para toda clase de aplicaciones y que además emplean los más conocidos frameworks que existen en el mercado, es el (MVC), o separación del código según sus funcionalidades en "Modelo Vista y Controlador", que esencialmente divide el total del código de la siguiente forma:

  • La parte correspondiente a la base de datos es para el (Modelo)
     
  • La parte correspondiente a mostrar los datos es para (Vista)  
     
  • La parte que sirve para conectar MODELO+ VISTA es para (Controlador o Controller)

Ahora bien, ¿Cómo aplicaremos esto dentro de nuestro módulo personalizado?, en Drupal y para nuestro ejemplo en particular, el controlador nos servirá para crear una página y posteriormente poder acceder a ella desde una url. 

Para añadir un Controlador o Controller, se debe respetar una estructura específica de archivos y del código a implementar, así que, vamos allá:

Paso 1:

Abre la carpeta de tu módulo personalizado que haz creado previamente siguiendo el anterior artículo y a continuación crearás una carpeta llamada src y dentro de ella otra carpeta a la que llamarás Controller.

Fíjate bien, en que la primera carpeta tiene el nombre en minúsculas y la segunda, que es dónde estará nuestra clase Controlador o Controller, deberá iniciar por mayúscula.

Paso 2:

Dentro de la carpeta Controller, ahora vas a añadir un archivo php, que será nuestra clase Controlador a la que llamaremos MyModuloController.php

Custom Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Paso 3:

Dentro del archivo MyModuloController.php, asegúrate de que tengas la etiqueta de apertura de <?php para que funcione, no nos hará falta cerrar la etiqueta en el caso de crear esta clase de archivos para Drupal.

Paso 4:

Añade el siguiente código a tu controlador y guarda el archivo. (Trata de escribirlo y no copiarlo para que se te grave en al memoria más fácilmente)

Ahora te explico qué es lo que tenemos aquí dentro paso a paso para que puedas aprenderlo:

En la primera parte, tenemos los comentarios, que en php se escriben entre /*** COMENTARIO AQUI ***/, y que para seguir una cierta estructura en el desarrollo, se emplea tal y como lo vez.

El @file le permite a Drupal identificar que se trata de un archivo, es recomendable añadirlo siempre en tus desarrollos para módulos personalizados.

Y a continuación, lo que estamos diciendo es que dentro de este archivo, se implementará la clase Controller de Drupal.

/**
 * @file
 * Implement MyModuleController
 */

Las versiones más recientes de php utilizan lo que se conoce como namespace con lo que se evita conflictos por el uso de clases duplicadas y la ubicación específica para la clase que deseamos utilizar en nuestros desarrollos.

namespace Drupal\mymodule\Controller;

Con esta línea en particular, estamos diciéndole a Drupal, dónde podrá encontrar nuestra clase Controller, indicándole que la busque dentro de nuestro módulo y a continuación, dentro de la carpeta llamada Controller.

La siguiente línea, es para indicar que vamos a utilizar una de las clases incluidas en la instalación de Drupal, que el algunos casos, también podría ser de Symfony, ya que Drupal 8 y 9 están basado en este Framework.

Cada vez que tengamos que utilizar una clase, primero necesitamos indicar que la utilizaremos escriendo una línea como la que hemos puesto nosotros en este caso.

use Drupal\Core\Controller\ControllerBase;

La clase ControllerBase nos servirá para emplear sus métodos y otras características definidas en ella, mediante la herencia de objetos en php para que el proceso se ejecute, añadiremos a la declaración de nuestra clase MyModuleController, la palabra  extends y así es como el código que escribamos en el Controller funcionará según lo esperado.


class MyModuleController extends ControllerBase {

 

}

Ahora que ya hemos llegado hasta aquí, sólo nos queda incluir el código restante dentro de nuestra clase, que lo único que hará es devolvernos un texto estático, al escribir en el navegador la url que le asignaremos con otro archivo, que aún no hemos creado y que se llamará mi_modulo.routing.yml

public function mypage(){
  return array(
    '#type' => 'markup',
    '#markup' => t('Este es el contenido de la página de MyModule'),
  );
}

Paso 5:

Para que podamos acceder a nuestra nueva página (mypage), tendremos que crear, al mismo nivel que el archivo "mi_modulo.info.yml", otro archivo al que llamaremos mi_modulo.routing.yml y dentro escribiermos la siguientes líneas, debes vigilar que se mantengan los espacios, no uses la teclas TAB, usa la barra espaciadora y controla siempre la estructura de dos en dos en cada zona indicada o tu código no funcionará:

mymodule.mypage:
  path: '/mypage'
  defaults:
    _title: 'Tïtulo de mi página para el módulo'
    _controller: '\Drupal\mymodule\Controller\MyModuleController::mypage'
  requirements:
    _permission: 'access content'

Vamos a explicar lo que tenemos dentro del archivo mi_modulo.routing.yml:

En la primera línea, y sin ningún espacio, hemos escrito el nombre del módulo, se recomienda para evitar conflictos con otros módulos que se llamen igual, luego hemos puesto un punto y a continuación el nombre que identifica nuestra ruta. 

mymodule.mypage:

En la segunda línea, con hemos dado dos veces a la barra espaciadora y luego hemos escrito lo que será la url para acceder a nuestra página.

  path: '/mypage'

En las siguientes líneas, primero estamos definiendo el título que aparecerá en la parte superior de la página y al que Drupal le asigna por defecto la etiqueta html <h1></h1>, y luego estamos indicando la ruta dónde Drupal deberá buscar el contenido de nuestra página, para ello, hemos definido entre comillas, la ruta completa comenzando con la barra inclinada seguida de Drupal hasta llegar al nombre de nuestra clase y finalmente, como nuestra página es un método, para que funcione hemos puesto los cuatro puntos.

defaults:
  _title: 'Tïtulo de mi página para el módulo'
  _controller: '\Drupal\mymodule\Controller\MyModuleController::mypage'

     Y ya hemos llegado al final del archivo, donde hemos definido que todo el que tenga permisos para ver el contenido publicado en nuestra web, también podrá acceder para ver esta página si pone la url en el navegador.

requirements:
  _permission: 'access content'

     ¡Ya está!, ahora que ya has realizado todos los cambios, creado los archivos y has seguido el consejo de no copiar y pegar, sino escribir todo el código, porque quieres llegar a entender y programar con responsabilidad, lo siguiente que tienes que hacer es, una vez hayas guardado los cambios, borrar las cachés y en el navegador escribir la url que hemos definido previamente, en la parte donde dice "path:",  es decir, escibe en el navegador  http://drupal9composer.localhost/mypage

Custom Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Si al Vaciar cachés y escribir la url en el navegador ves esta página, ¡Felicidades!, porque ya has aprendido a crear una página utilizando la clase Controller en un módulo personalizado.

El archivo para definir las rutas y ubicación del controlador del módulo personalizado, tendrá la extensión: .routing.yml

Módulo personalizado en Drupal 9 (Parte 1)

Video de Youtube
URL de Video remoto
Texto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

Cómo crear un módulo en Drupal 9 (1era Parte)

Drupal es un potente CMS o gestor de contenidos, que entre otras características, nos permite escalar cualquier proyecto para llegar a cumplir con innumerables requerimientos de nuestros clientes.

Para mantener un control durante la aplicación de cualquier mejora y a su vez facilitar la implementación de nuevas funcionalidades y del mantenimiento en cualquier proyecto; es recomendable encapsular dichas funcionalidades dentro de módulos, también conocidos como plugins, cuya activación y testeo nos dará la oportunidad de identificar más fácilmente las posibles causas en caso de ocurrir algún error en nuestra web.

Por eso a continuación te voy a guiar paso a paso en la construcción de un módulo, con el cual podrás modificar el formulario de comentarios que viene por defecto en cualquier instalación de Drupal 8 o 9 para que te sirva como referencia y puedas partir de esta base en el desarrollo de todos los módulos que hagan falta en tu proyecto.

Requisitos y recomendaciones

Es recomendable usar Composer para que puedas instalar todos los módulos con sus respectivas dependencias.(Ver video)

Deberás descargar y activar el módulo Devel para que puedas imprimir variables y otras opciones muy útiles

Te recomiendo descargar activar el módulo Admin Toolbar para facilitarte la navegación en Drupal

Te recomiendo descargar drush para que puedas ejecutar comandos directamente en consola que te ayudarán a ir más rápido en muchas de las operaciones que realizarás durante tu desarrollo. Para descargar drush, colócate en la carpeta raíz de tu drupal 9 y si ya has instalado composer ejecuta el siguiente comando: "C:\xampp\htdocs\midrupal9>composer require drush/drush", una vez descargado drush sólo tendrás que ejecutar "C:\xampp\htdocs\midrupal9>vendor/bin/drush COMANDO"

Si ya tenemos todo, comencemos a crear nuestro módulo:

Paso 1:

Crea una carpeta con el nombre de tu módulo en la siguiente ruta: '/sites/modules/custom/mi_modulo".

Es recomendable que todos los módulos que desarrolles estén dentro de la carpeta CUSTOM para que tu código esté más organizado. Al utilizar composer cada vez que instales un nuevo módulo de Drupal, Composer colocará estos módulos dentro de una carpeta llamada contrib, por eso, los que desarrolles tú deberían estar dentro de la carpeta "custom"

Paso 2:

Dentro de la carpeta de tu módulo, deberán estar al menos dos archivos para que funcione correctamente "mi_modulo.info.yml" y "mi_modulo.module", así que ahora vas a crear primero el archivo "mi_modulo.info.yml" y dentro vas a colocar los siguientes datos. Es importante que respetes los espacios en cada línea o no funcionará.

name: Mi modulo
description: 'Modifica el botón en el formulario de contacto de los comentarios'
package: mismodulos

type: module
core_version_requirement: ^8 || ^9

Paso 3:

Dentro de la carpeta de tu módulo, crea el archivo "mi_modulo.info.yml" y no hace falta que pongas nada más por ahora, sólo guárdalo.

¡FELICIDADES!, ya has creado tu primer módulo, ahora sólo tienes que activarlo para comprobar que no hay ningún error antes de continuar.

Para activar tu módulo podrás hacerlo usando drush "vendor/bin/drush en mi_modulo -y" o desde la interfaz llendo a "http://drupal9composer.localhost/admin/modules"

Custom Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Paso 4:

Ahora nos toca trabajar con el archivo "mi_modulo.module", así que ábrelo y vamos a añadir la primera parte del código; antes de empezar recuerda que debes tener activado el módulo Devel para que funcione lo que estamos buscando, necesitamos imprimir el nombre del formulario que vamos a modificar, para ello, después de activar el módulo Devel, podemos escribir el siguiente código dentro del "mi_modulo.module":

<?php

/**
 * @file
 * Implement hook_form_alter().
 */

function mymodule_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id){
  ksm($form_id);

}

A continuación guarda los cambios y borra el caché de drupal. 

Para borrar el caché de Drupal tienes dos opciones:

     Opción 1:
     
Llendo a "http://drupal9composer.localhost/admin/config", luego seleccionar "Rendimiento", a continuación hacer clic en el botón "Vaciar todas las cachés"

Custom Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Opción 2:
     Si haz activado el módulo Admin Toolbar, verás el logo de Drupal en la parte superior izquierda; haciendo clic sobre el logo, verás el desplegable que te permitirá seleccionar Vaciar todas las cachés

Custom Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Paso 5:
Para comprobar el cambio que acabamos de realizar, tendrás que crear un artículo de prueba, no importa el contenido y guardarlo. Y entonces podrás ver el (ID) o idenfificador de los formularios, esto te permitirá afectar sólo al formulario que tenga el identificador que quieras modificar.

Custom Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Paso 6:

Ya que sabemos el ID o identificador del formulario, abriremos nuevamente el  "mi_modulo.module" y añadiremos el resto del código, guardamos y comprobamos el cambio en el formulario de los comentarios, Ahora el botón habrá cambiado por el texto que hemos puesto t('Comentar'), la "t" es para que sea un texto que podamos traducir (Recuerda Vaciar los cachés):
 

<?php

/**
 * @file
 * Implement hook_form_alter().
 */

function mymodule_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_state, $form_id){
  //ksm($form_id);
  if($form_id == 'comment_comment_form'){
    $form['actions']['submit']['#value'] = t('Comentar');
  }
}

Si vuelves a ver el artículo que habías creado, podrás comprobar que todo funciona correctamente.

Custom Module Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

A partir de Drupal 8, los módulos personalizados deberán colocarse en la ubicación: "/sites/modules/custom/mi_modulo"

Drupal 9 | Copias de seguridad

Texto

Cuatro maneras para realizar una copia de tu base de datos Drupal

        Antes de realizar cualquier tipo de actualización en tu proyecto de Drupal, es altamente recomendable, sacar una copia de tu base de datos actual, para evitar posibles pérdidas de información durante el proceso. Tienes varias opciones para extraer esta copia de la base de datos.

  • Copia de la base de datos utilizando Drush.

       Para exportar la base de datos de tu proyecto Drupal, utilizando Drush, colócate en la carpeta raiz de tu proyecto, usando tu consola de comandos y a continuación, ejecuta el siguiente comando, sustituyendo el final, por el nombre que quieres para identificar tu copia de seguridad:

    drush sql:dump --result-file=../mi_backup.sql 

Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony
  • Copia de la base de datos desde la interfaz PhpMyAdmin.

    Si tienes activado el administrador de Base de datos PhpMyAdmin, puedes exportar tu base de datos, a través de su interfaz. Para ello, sólo tienes que acceder a PhpMyAdmin, y a continuación seleccionar la base de datos que necesitas exportar; luego seleccionas el botón exportar, desde el menú superior de PhpMyAdmin y haces clic en continuar.

    El resultado será un archivo con la extensión .sql, que se descargará automáticamente.

Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony
  • Exportar la base de datos utilizando la línea de comandos MySql.

     Para extraeer una copia de tu base de datos, a través de los comandos MySql, deberás ejecutar la siguiente línea, sustituyendo los datos del usuario root, y tu bases de datos y el archivo.sql resultante.

mysqldump -u usuario -p base_de_datos > archivo.sql

 

  • Exportar una copia de la base de datos, usando el módulo Backup and Migrate.

     Otra forma que nos ofrece Drupal, para exportar una copia de la base de datos, será a través del módulo Backup and Migrate, con el que podremos descargar, a través de la interfaz de Drupal, una copia completa de nuestro sitio web, en formato comprimido, que podremos importar en el entorno local o cualquier otro entorno que necesitemos.

     Si quieres aprender a configurar y utilizar el Módulo Backup and Migrate HAZ CLIC AQUI

Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony

Drupal Update | Actualizar Drupal usando Composer y Drush

Video de Youtube
URL de Video remoto
Texto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

Guía para actualizar tus proyectos Drupal, utilizando Composer y Drush

     Si utilizas Drupal en tus proyectos, es casi seguro que te habrás encontrado con la necesidad de actualizarlo, ya sea para corregir fallos de seguridad, para implementar las mejoras en el código de algún módulo, o para obtener la versión más reciente de su núcleo.

     Por esta razón, en este curso, te enseñaré los pasos que deberías tener en cuenta, en caso de tener que realizar una actualización de tus proyectos Drupal.

   Requisitos:

  1. Tener configurado un entorno local, donde puedas poner en marcha tu proyecto Drupal.

    Si no sabes instalar un entorno local, HAZ CLIC AQUÍ
     
  2. Capacidad para ejecutar comandos de Composer y Drush en tu consola

            Si no tienes Composer instalado, HAZ CLIC AQUI


   Guía para actualizar tus proyectos Drupal, utilizando Composer y Drush


     Paso 1 - Sacar una copia de la base de datos.

        Antes de realizar cualquier tipo de actualización en tus proyectos, es recomendable que hagan una copia de seguiridad, para evitar pérdidas de información durante el proceso, o para volver a la versión anterior, en caso de que no consigas el resultado esperado con la actualización de tus proyectos.

     Para saber cómo hacerlo HAZ CLIC AQUI

     Paso 2 - Verificar los módulos que necesitarán sera actualizados y la razón.

       Es muy recomendable revisar constantemente, el estado de tus proyectos, porque constantemente en Drupal, se añaden nuevas funcionalidades y optimizaciones en el código, y muchas de estas mejoras, están relacionadas con la corrección de fallos de seguridad. Por esta razón, es de vital importancia, que mantengas actualizados tus proyectos con Drupal, siempre que sea posible.

       Para conocer las actualizaciones pendientes en tus proyectos Drupal, puedes elegir entre dos opciones básicas.

     Informe de actualizaciones pendientes, através de la interfaz de Drupal.

       Puedes acceder al informe sobre las actualizaciones pendientes de Drupal, desde la interfaz de usuario, en la url

"/admin/reports/updates"

   

Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Comprobar actualizaciones pendientes mediante consola.

       Otra de las maneras de comprobar los módulos que necesitas actualizar en Drupal, es a través de la consola, gracias al gestor de paquetes Composer, recomendado para cualquier instalación de proyectos Drupal, desde la versión 8.

       En el caso de conocer las actualizaciones pendientes en nuestros proyectos Drupal, nos colocaremos en la carpeta raíz, que es el lugar desde donde podremos ejecutar, en la mayoría de los casos, tanto Composer como Drush. 

        Una vez colocados allí, utilizando nuestra consola de comandos, ejectaremos la siguiente línea de código:

composer outdated

Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Tanto si realizamos la comprobación, por medio de la interfaz de Drupal, como si decidimos realizarlo por medio de la consola de comandos, el restultado debería ser el mismo; es decir, deberíamos obtener el listado de módulos pendientes de actualizar, con las versiones instaladas en el momento de realizar la comprobación, las posibles versiones recomendadas y las notas relacionadas con dichas nuevas versiones, en el caso específico de hacerlo mediante la interfaz de usuario.

     Pero si analizamos en profundidad ambos resultados, el informe resultante desde la consola, es mucho más extenso que el de la interfaz. Esto se debe, a que, además de los módulos de Drupal que requieren actualizarse, Composer nos muestras módulos de Symfony, ya que el núcleo de Drupal está basado en este Framework desde la versión 8.

   Cómo actualizar Drupal por medio de la consola

     Si optamos por actualizar nuestro proyecto de Drupal, por medio de su interfaz de usaurio, el proceso es bastante sencillo. Aunque desde la interfaz, sólo podremos realizar actualizaciones de los módulos, no del núcleo de Drupal.

     Para realizar una actualización de los módulos de Drupal, desde la interfaz, bastará con dirigrinos a la url: "/admin/reports/updates/update" , luego marcaremos el o los módulos que queremos actualizar, haciendo clic en el check que se muestra a la izquierda de cada módulo, y a continuación, haremos clic en el botón Descargar estas actualizaciones, que podremos encontrar la final de la misma página.

Drupal Update | www.drupaladicto.com - Consultor especializado en drupal y symfony

   Actualización mediante consola, utilizando Composer

     Para realizar la actualización de nuestro proyecto Drupal, a través de la consola, utilizaremos Composer y Drush. Composer se encargará de descargar todas las dependencias disponibles, tanto de módulos de Drupal y Núcleo, como de otros componentes relacionados con Symfony. Por esta razón, es recomendable elegir este método de actualización, ya que nos mostrará más información relacionada con todo el proceso y componentes que está actualizando durante el proceso.

     El comando para actualizar todos los módulos de Drupal y su Núcleo al mismo tiempo es el siguiente:

composer update "drupal/*" -W

     El asterísco que se muestra en la barra después de la palabra Drupal, indica que deseamos actualizar todo lo que esté disponible en este momento y la -W, es el sustitutivo para la opción "--with-all-dependencies", aunque puedes utilizarla si lo prefieres. 

     Una vez terminada la descarga de todos los módulos, ejecutaremos los comando de Drush, para borrar la cache de drupal y actualizar la base de datos.

drush cr

drush updb

     En el momento que ejecutemos los comando de Drush, podremos acceder nuevamente a la url "/admin/reports/updates", donde deberíamos ver todos los módulos y el núcleo en color VERDE, indicándonos que no tenemos ninguna actualización pendiente.

Drupal 9 Multisitio con Lando y WSL2 en Windows 11

Video de Youtube
URL de Video remoto
Texto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

         Desde que conocí Lando, se abrió para mi un mundo de posibilidades, que quiero compartir con todos ustedes; ya que simplifica considerablemente la configuracion de cualquier entorno local, sin la necesidad de grandes cambios, ni correr el riesgo de perder, más tiempo del necesario, cuando queremos realizar algún traspaso de archivos, o compartir las mismas confirguraciones con el resto del equipo, ya que una vez subidos los archivos al respositorio, descargarlos y arrancar el proyecto en cualquier lugar será tan fácil como prepararnos un café en la maquina de la oficina o en la de casa, ahora que trabajamos en remoto.

     Instalar un Drupal 9 Multisitio utilizando Lando en Windows 11 

        Prerequisitos

           - Tener descargado y configurado lando en tu entorno local. (Haz clic aquí para saber cómo)

           - Tener descargados los archivos Base de Drupal para la instalación con Lando. (Sigue las instrucciones de Instalar Drupal 9 en Ubuntu 20.04 hasta el Paso 1)

     Paso 1 - Configuración del archivo lando.config

        Lando funciona con un archivo de configuración, que nos permitirá arrancar diferentes servicios para que nuestra aplicación funcione correctamente. Por defecto, en una instalación Drupal 9 normal, sólo tendríamos que ejecutar el comando lando init, y se generaría este archivo de configuración, con todo lo necesario para ejecutar lando y Drupal 9 sin problemas.

        Sin embargo, en el caso de una instalación Drupal 9 Multisitio, tendremos que crear y nuestro propio archivo de configuración para lando y modificarlo de acuerdo a nuestras necesidades; por ejemplo, las urls para nuestros sub-dominios, los datos de acceso para cada base de datos, etc.

        Aunque puedes añadir otras muchas configuraciones en un proyecto de este tipo, a continuación te daré el archivo básico, con la explicación de cada apartado importante, para que puedas arrancar varios sitios Drupal 9, con Lando.

        Colócate en la carpeta donde haz descargado los archivos Base, de Drupal, que tienes explicado en el artículo de los prerrequisitos y, a continuación, crea un archivo llamado .lando.yml con el siguiente código:

name: drupal-multi
recipe: drupal9
config:
  webroot: web
  php: '8.0'
  composer_version: '2.0.7'
  via: apache
  drush: false
  xdebug: false

proxy:
  appserver:
    - main.lndo.site
    - sitio1.lndo.site
    - sitio2.lndo.site

services:
  # The database service used for the `main` site.
  database:
    type: mariadb:10.4
    portforward: true
    creds:
      user: drupal
      password: drupal
      database: main
  sitio1:
    type: mariadb
    portforward: true
    creds:
      user: sitio1
      password: sitio1
      database: sitio1
  sitio2:
      type: mariadb
      portforward: true
      creds:
        user: sitio2
        password: sitio2
        database: sitio2

     Explicación:

         En la primera parte del archivo de configuración, además del nombre del proyecto, tenemos las principales configuraciones, relacionadas con la versión de PHP, de gestor de paquetes Composer, el tipo de servidor, que en este caso es Apache, ya que Ngnix me dio varios errores y el drush y xdebug como false, pero podrás ejecutar comandos tanto de composer como de drush, usando la estructura que te contaré más adelante, ya que se trata de una instalación Drupal 9 Multisitio.

name: drupal-multi
recipe: drupal9
config:
  webroot: web
  php: '8.0'
  composer_version: '2.0.7'
  via: apache
  drush: false
  xdebug: false

     En la sección de Proxy, es donde definiremos los diferentes dominios para nuestos sitios Drupal, todos deberán terminar en " .lando.site" y el nombre principal deberá corresponder con su respectiva carpeta de instalación, tal y como sucede en una instalación Drupal 9 Multisitio tradicional. 

proxy:
  appserver:
    - main.lndo.site
    - sitio1.lndo.site
    - sitio2.lndo.site

     La última parte del archivo de configuración, es en la que definiremos todos los datos relacionados con nuestras bases de datos, recuerda que puedes confirmar toda la información, una vez arrancado lando, usando el comando de información:

lando info

     Paso 2 - Configuración del Drupal principal y los multisitios

        Llegados a este punto, antes de arrancar nuestro proyecto de Drupal, tendremos que hacer varios ajustes:

     1.- Renombrar el archivo example.sites.php y dejarlo como sites.php, luego dentro tendremos que añadir los diferentes dominios y las carpetas a las que apuntará cada uno de ellos.

Drupal Lando Multisite | www.drupaladicto.com - Consultor especializado en drupal y symfony

     2.- Crear las carpetas que corresponden con los nombres de los dominios que haz declarado en el archivo de configuración. el nombre de las carpeta deberá coincidir tanto con el nombre que haz puesto en el archivo de configuración de lando, como en el sites.php de la imagen anterior.

Drupal Lando Multisite | www.drupaladicto.com - Consultor especializado en drupal y symfony

     3.- Añadir archivos de configuración en los multisitios. Toda instalación de Drupal require de al menos dos archivos para su configuración, el archivo donde estarán definidos todos los datos de acceso a su base de datos, llamado settings.php y la carpeta files, donde alojará todos los archivos, imágenes, caché, etc.
Así que tendrás que copiar el modelo del archivo default.settings.php que está dentro de la carpeta sites/default y una vez dentro de cada carpeta de tus multisitios, renombrarlo a settings.php. A continuación crearás una carpeta files, dentro de cada carpeta. 

Drupal Lando Multisite | www.drupaladicto.com - Consultor especializado en drupal y symfony

      Arrancando los Multisitios Drupal 9

        Ya que tenemos todos los archivos necesarios, para comenzar a instalar cada uno de nuestros Multisitios de Drupal 9, deberíamos ejecutar los siguientes comandos en este orden, para evitar sorpresas:

lando start

lando composer install

lando rebuild

lando info

     Con el comando "lando start ", nos aseguraremos de que Lando arranque correctamente, utilizando la configuración que hemos definido en el archivo de configuración .lando.yml.

     El comando "lando composer install", iniciará la descarga del resto de dependencias necesarios, para que podamos instalar nuestro Drupal, ya que dentro de los archivos nos faltarán carpetas principales como Vendor.

     El comando "lando rebuild", sirve para realizar un repaso general de la aplicación, una vez descargados los archivos con Composer, al final de la ejecución el comando nos debería mostar en pantalla, las diferentes urls disponibles para cada uno de los Multisitios.

Drupal Lando Multisite | www.drupaladicto.com - Consultor especializado en drupal y symfony

     El comando "lando info", nos servirá para confirmar los datos de acceso a las bases de datos, con sus respectivos usuarios y contraseñas. 

Drupal Lando Multisite | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Una vez ejecutados todos los comandos anteriores, podremos comenzar con el proceso de instalación de cada uno de los multisitios, escribiendo el dominio correspondiente, que hemos definido en el archivo de cofiguración de lando y que confirmamos al ejecutar el comando "lando info".

     Recuerda, que en el caso de instalar Drupal 9 utilizando Lando, deberás cambiar el localhost del servidor de base de datos, por el que aparece en la consola.

Drupal Lando Multisite | www.drupaladicto.com - Consultor especializado en drupal y symfony

Drupal Lando Multisite | www.drupaladicto.com - Consultor especializado en drupal y symfony

Multisite con Drupal 9 | Configuración

Video de Youtube
URL de Video remoto
Texto

Si no ves el video, puedes refrescar el navegador, presionando (Ctrl+Shift+R | Ctrl+F5 o Shift+F5), o abrirlo directamente desde el Canal de Youtube... HAZ CLIC AQUI

     Consideraciones antes de instalar un Multisite Drupal 9

          En algunos proyectos web, se hace necesario la implementación de un sistema ágil y rápido, para que se puedan realizar actualizaciones, nuevas implementaciones o mejoras en el código, invirtiendo en ello el menor tiempo posible y sin la necesidad de un gran número de personas para dichas tareas. Por ejemplo, para un grupo de empresas, o en el caso de tener varias webs con las mismas funcionalidades, pero destinadas a distintos públicos.

        Una alternativa disponible en Drupal, es la posibilidad de usar la instalación Multisite, (Múltiples sitos compartiendo el mismo núcleo), esto signfica, que una vez realizadas las configuraciones principales, cada vez que se vaya a instalar un nuevo sito web, se requerirá de un mínimo de pasos, para obtener un resultado idéntico, o también disponer de una base de partida, para desarrollar nuevas funcionalidades específicas de ese sitio en concreto.

      Pros y Contras de una instalación Multisite Drupal 9

          Antes de optar por este tipo de instalación en un proyecto Drupal, es necesario que entiendas algunos puntos relacionados, en la mayoría de los casos, con las actualizaciones y nuevas implementaciones.

        Pros:

           - La instalación principal será la que controle todo el resto de webs, esto significa que todos los módulos y/o themes, podrán estar disponibles y activarse o no, según las necesidades individuales de cada sitio.

          - Algunas actualizaciones de módulos o themes, podrán realizarse con la ejecución de unos pocos comandos, para todos los sitios al mismo tiempo.

          - Podrás utlizar base de datos o un perfil de instalación, que sirva de base automáticamente para los nuevos sitios.

          - Ahorrarás espacio de disco, ya que todos los sitios comparten el mismo número de archivos del core de Drupal.

        - Todos los sitios comparten un dominio principal, por lo que, durante el desarrollo se utilizan subdominios de este, ej.: sitio1.midominio.com, sitio2.midominio.com; facilitando la instalación y configuración durante el desarrollo, luego cada uno podrá tener su propio Dominio independiente.

       Contras:

         - Al realizar actualizaciones del núcleo o de los módulos, deberás ejecutar comandos de borrado de Caché y Actualización para todos los sitios.

        - Si se crea e instala un módulo personalizado con errores, podría afectar al resto de sitios.

     Pasos para realizar una instalación Multisite Drupal 9

       Paso 1 - Descarga de los archivos de Drupal 9

           Antes de comenzar con el resto de configuraciones, lo primero que necesitarás hacer, al igual que con cualquier otra instalación de Drupal, será descargar los archivos correspodientes, utilizando el gestor de paquetes Composer. Aprende como instalar Drupal usando composer aquí.

       Paso 2 - Configuración de los dominios para cada sitio

          Para indicarle a Drupal, dónde deberá realizar la instalación de cada sitio, una vez descargados los archivos correspondientes, y configurado el servidor Apache, con cada uno de los dominios relacionados, puedes aprender cómo configurar dominios en Apache aquí, la única diferencia con relación a si realizáramos una instalación normal, en lugar de una multisite, es que en cada uno de los archivos de los dominios, el Document root deberá ser exactamente igual.

                # Web root
                DocumentRoot /var/www/multisite/web

 

Multisite Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Multisite Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

        Paso 3 - Configuración del archivo sites.php de Drupal

           Tendremos que realizar algunos cambios dentro del Drupal; el primero de ellos será renombrar el archivo example.sites.php, ubicado dentro de la carpeta 'web/sites' y dejarlo como sites.php.

Multisite Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Multisite Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

        A continuación deberíamos copiar el modelo que nos trae este archivo, para indicar en cada uno de los casos, el dominio correspondiente a cada una de las carpetas donde queremos realizar las instalaciones.

        El resultado final será algo parecido a las líneas que aprecen bajo la siguiente imagen, por cada uno de los dominios y sitios que estemos instalando. La primera parte indica el nombre del dominio y la segunda, el nombre de la carpeta a la que apuntará dicho dominio, una vez ejecutemos el instalador de Drupal.

Multisite Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony
$sites['sitio1.midominio.com'] = 'sitio1';
$sites['sitio2.midominio.com'] = 'sitio2';

Multisite Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

     Paso 4 - Crear y configurar Bases de datos y usuarios para cada sitio

        Como habrás imáginado, se recomienda que cada una de las instalaciones, deberá tener una base de datos individual, con su respectivo usuario administrador específico, para evitar fallos de todo tipo, que podrían repercutir en el resto de sitios, provocándonos grandes dolores de cabeza. Una vez crada la base de datos, podremos comenzar con la instalación de cualquiera de los sitios. Puedes aprender a crear usuario y bases de datos aquí 

     Paso 5 - Copia y creación de Settings.php y Files

        Existe un último paso antes de comenzar con nuestras instalaciones de Drupal Multisitio, para cada uno de ellos drupal necesitará encontrar el archivo "settings.php", donde guardará las configuraciones relacionadas con la conexión a la base de datos, archivos de configuración, temporales, privados, etc. y por otro lado la carpeta "files", donde guardará todos los archivos relacionados con imágens, css, javascript, entre otros.

        Por esta razón, antes de ejecutar el instalador para el primero de nuestros dominios, copiaremos y renombraremos el archivo default.settings.php, dejándolo como settings.php dentro de cada una de las carpetas correspondientes a cada sitio que instalaremos y, a continuación, también en cada una de ellas, crearemos una carpeta files.

Multisite Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

Multisite Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

        Paso 6 - Acceder al navegador y accionar el instalador

          De aquí en adelante, no hay nada nuevo, por cada una de las webs que quieras instalar, escribirás en el navegador el dominio correspondiente y a continuación, una vez activado el instalador de Drupal, lo único que tendrás que hacer es clic en siguiente hasta finalizar el proceso y repetir los pasos por cada uno de tus sitios.

Multisite Drupal | www.drupaladicto.com - Consultor especializado en drupal y symfony

    Comandos para realizar cambios en tu Multisite Drupal 9

             Como hemos utlizado Composer para descargar todos los archivos necesarios de nuestras instalaciones, además de contar con Drush, como parte de las herramientas que podremos emplear, significa que ambas opciones estarán disponibles para cada uno de nuestros sitios, sólo habrá que tener en cuenta unos pequeños cambios en su ejecución:

            Para comprobar los módulos o el núcleo desactualizado

composer outdated drupal/*

          Para ejecutar la actualización de todos los módulos y el core

composer update drupal/*

          Para descargar módulos

composer require drupal/MIMODULO

          Para activarlo en un sitio específico

drush en drupal/MIMODULO --uri=sitio1.midominio.com

          Para borrar la caché de un sitio específico

drush cr --uri=sitio1.midominio.com

          Para actualizar la base de datos en un sitio específico

drush updb --uri=sitio1.midominio.com