Drupal 11.2.0: Actualización Mayor con Control de Ejecución de Hooks y Mejoras en el Núcleo

- 01 Jul 2025 05:23 AM
Representa un avance significativo para desarrolladores, con herramientas como el ordenamiento de hooks que simplifican la gestión de módulos complejos.
El equipo de desarrollo de Drupal ha liberado la versión 11.2.0, una actualización que introduce un sistema revolucionario para ordenar la ejecución de hooks, junto con mejoras en seguridad, rendimiento y compatibilidad con tecnologías modernas.
Esta versión, dirigida principalmente a desarrolladores de módulos y distribuciones, incluye también la actualización de componentes clave como Symfony 7.3 y CKEditor 5.45.2, además de correcciones a más de 50 bugs reportados por la comunidad.
Novedades Técnicas Principales
Ordenamiento de Hooks con el Parámetro order
Una de las características más destacadas es la introducción de un sistema para controlar el orden de ejecución de hooks mediante el atributo #[Hook]
. Desarrollado por Karoly Negyesi y mejorado por Andreas Hennings, este sistema permite:
Priorización simple:
#[Hook('hook_name', order: Order::First)]
Ejecuta el hook antes que otras implementaciones.
Relaciones complejas:
#[Hook('hook_name', order: new OrderBefore(['other_module']))]
Especifica que el hook debe ejecutarse antes que los de otro módulo. También soporta OrderAfter
y referencias a clases/métodos
Compatibilidad con versiones anteriores:
Los módulos que usaban hook_module_implements_alter
deben migrar al nuevo sistema, aunque se incluye el atributo #[LegacyModuleImplementsAlter]
para facilitar la transición.
Actualizaciones de Dependencias
-
Symfony 7.3: Mejoras en seguridad para el componente Mailer y optimizaciones en el sistema de servicios.
-
CKEditor 5.45.2: Soporte para estilos anidados y correcciones en la manipulación de tablas.
-
PHPStan 2.1.17: Detección avanzada de errores estáticos en tiempo de desarrollo.
Correcciones de Bugs Críticos
-
Seguridad:
-
Resuelta una vulnerabilidad en
StringDatabaseStorage::deleteStrings()
que podía corromper datos. -
Actualización del esquema de configuración para el componente Mailer de Symfony.
-
-
Rendimiento:
-
Optimización en el manejo de etiquetas de caché para evitar crecimiento indefinido.
-
Mejora en la escritura directa del Package Manager, eliminando la verificación redundante de rsync.
-
-
Usabilidad:
-
Corrección de un error donde los elementos de segundo nivel en menús no eran accesibles si tenían hijos.
-
Cambios en APIs y Deprecaciones
-
Deprecación de
TestDiscovery
:
Se reemplaza el escaneo manual de archivos de prueba por la API nativa de PHPUnit. -
Nuevo manejador de cron:
Eliminación de clases proxy en favor de cierres (closures) para mejorar la eficiencia. -
AVIF con fallback a WEBP:
Todas las imágenes generadas por Drupal Core usan ahora AVIF, con WEBP como alternativa.
Ejemplo Práctico: Migración a Hooks Ordenados
Para un módulo que requiere ejecutar un hook antes que views
:
use DrupalCoreAttributeHook; use DrupalCoreRenderAttributeOrderBefore; #[Hook('views_pre_view', order: new OrderBefore(['views']))] public function customPreView() { // Lógica personalizada. }
Problemas Conocidos
-
Incompatibilidad con Project Browser (<2.1): Puede generar conflictos en instalaciones que usan Actualizaciones Automáticas.
-
Dependencias ocultas: Módulos como
layout_builder
aún tienen dependencias no declaradas enblock_content
.
Requisitos y Actualización
-
PHP 8.3+: Obligatorio para nuevas instalaciones.
-
MySQL 8.0+ o PostgreSQL 13+: Requisito para bases de datos.
-
Proceso recomendado:
-
Actualizar dependencias con Composer:
composer require 'drupal/core:^11.2' --update-with-dependencies
- Revisar hooks migrados y usar
drush updb
para aplicar actualizaciones de esquema.
-
Conclusión
Drupal 11.2.0 representa un avance significativo para desarrolladores, con herramientas como el ordenamiento de hooks que simplifican la gestión de módulos complejos. Sin embargo, la migración requiere atención a las deprecaciones y pruebas rigurosas en entornos staging.
Documentación adicional:
¿Has encontrado problemas con esta versión? Reporta bugs en el issue tracker de Drupal.