Muchas veces necesitamos aplicar un parche a un módulo contrib que estamos usando en nuestro proyecto y para hacerlo necesitamos preparar nuestro durpal.
En este tutorial veremos como hacerlo paso a paso.
Para el ejemplo vamos a aplicar un parche al módulo storybook (módulo que estoy usando en uno de mis proyectos).
Antes que nada debemos preparar nuestro drupal para que pueda importar parches tanto sea al core como a los módulos contribs o themes.
Instalamos el paquete: cweagans/composer-patches
composer require cweagans/composer-patches
Ahora instalamos el módulo en nuestro drupal como siempre (en este caso es un Drupal 11)
composer require 'drupal/storybook:^1.0'
drush en -y storybook
drush cr
Ahora vamos a buscar el parche. Cabe aclarar que la issue o problema del módulo tiene que tener un parche provisto y aprovado por los mantenedores del módulo, en este caso veremos la issue relacionada a un problema con las imágenes que tiene el módulo de storybook, la issue se titula: Image not displayed correctly because image path is relative.
Dentro de la issue buscamos una sección donde se encuentran los parches para la version del módulo que estamos usando

Vamos a copiar la url al parche, en este caso: https://www.drupal.org/files/issues/2024-12-19/storybook-images_not_displayed_correctly_because_image_path_is_relative-3441430-11.patch
Bien ahora que tenemos el parche vamos a incorporarlo en el composer.json file de nuestro proyecto en la sección llamada extra
"extra": {
"patches": {
"drupal/storybook": {
"Issue #3441430": "https://www.drupal.org/files/issues/2024-12-19/storybook-images_not_displayed_correctly_because_image_path_is_relative-3441430-11.patch"
}
},
"drupal-scaffold": {
"locations": {
"web-root": "web/"
}
},
Es importante que pongamos bien el nombre del módulo contrib que estamos parchando, en este caso drupal/storybook y luego en el nombre del parche podemos poner lo que deseemos, en mi caso pongo el número de la issue relacionada con el problema: #3441430.
Ahora para que el parche sea aplicado tendremos que ejecutar el comando (tambien funciona con el composer update)
composer install
Luego en la consola podremos ver el mensaje de parche aplicado, si todo fue bien veremos algo así

Como se puede ver en la imagen el parche fue aplicado con éxito. Si vemos un mensaje de error puede ser porque el parche no es para la version del módulo que estamos usando, en cuyo caso debemos pedir que se cree un parche para nuestra version o bien desarrollar nosotros mismos el parche y contribuirlo a la comunidad 😉
Bueno eso es todo por ahora respecto de la aplicación de parches en módulos contrib.
Este post fue inspirado por este gran aporte realizado por Goran Nikolovski.
Crear y aplicar un parche (patch) custom
Si encontramos un error en un modulo contrib y no hay todavia una solucion por parte de los que mantienen el modulo, podemos crearlo nosotros y aplicarlo en nuestro proyecto mientras esperamos que lo solucionen en una nueva version del modulo.
Los pasos son los siguientes:
- Clonar el modulo en la version que estamos usando.
- Agregar los cambios que solucionan el problema.
- Generar el parche usando git diff.
- Poner el parche en la carpeta patch del proyecto.
- Agregar el parche en el composer.json.
- Ejecutar el comando composer install para implementar los cambios.
Usaremos por ejemplo un caso real que tuve con el modulo adsense en su version 8.x-1.5
Clonar el modulo en la version que estamos usando
Creamos una carpeta en nuestro file system para clonar el repo del modulo y editarlo
mkdir custompatch
cd custompatch
git clone -b 8.x-1.5 --single-branch https://git.drupalcode.org/project/adsense.git
cd adsense

Agregar los cambios que solucionan el problema, en este caso el file AdsenseManagedSettings.php
nano web/modules/contrib/adsense/src/Form/AdsenseManagedSettings.php
Generar el parche usando git diff
git diff > adsense-8x-1.5-20250701-1.patch
Poner el parche en la carpeta patch del proyecto
cp adsense-8x-1.5-20250701-1.patch ~/drupalproject/patches

Agregar el parche en el composer.json en la seccion de extra -> patches
"drupal/adsense": {
"Update settings form in AdsenseManagedSettings": "patches/adsense-8x-1.5-20250701-1.patch"
}
Ejecutar el comando composer install para implementar los cambios
composer install
Listo ya deberiamos poder chequear el file que queriamos modificar para tener los cambios implementados en nuestro proyecto.