logo

Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Comenzando - Información de referencia (Drupal 8)

20/06/2025, by Ivan

Menu

Drupal 8 utiliza una serie de funciones avanzadas del lenguaje PHP y complejas librerías externas para proporcionar a los desarrolladores externos la API más avanzada de todos los CMS disponibles. Aunque los desarrolladores experimentados de Drupal 7 pueden notar algunos cambios significativos, la mayor parte de la estructura básica les resultará familiar.

Si alguno de los materiales presentados durante esta guía paso a paso para desarrolladores de módulos D8 te resulta nuevo, el siguiente contenido puede ayudarte. Sin embargo, no se requieren conocimientos exhaustivos para avanzar hacia la descripción del módulo D8.

Programación orientada a objetos

La POO, aunque inicialmente intimidante, se ha consolidado como la mejor manera.
Para una visión general de las mejores prácticas en PHP, lee phptherightway.com. Drupal no utiliza todas las herramientas y métodos documentados allí, pero es una excelente introducción a PHP y muchas de sus características.

Actualiza tus conocimientos de POO leyendo la documentación oficial de PHP sobre clases y objetos, así como algunos de estos buenos tutoriales:

Drupal 8 también utiliza algunos patrones comunes de diseño, y querrás asegurarte de tener una idea general sobre ellos:

Patrón Factory y enlaces estáticos tardíos
Patrones de diseño de software (en Wikipedia)
Fundamentos de programación: patrones de diseño (en lynda.com)
@todo: añadir enlaces adicionales a documentación sobre patrones que usamos...

Espacios de nombres en PHP

Si no estás familiarizado con el concepto de espacio de nombres en PHP, prueba algunos de estos artículos:

En la mayoría de los casos, el código de Drupal tiene espacios de nombres basados en el módulo al que pertenece.

Ejemplo: espacio de nombres para block.module

namespace Drupal\block;

@todo: explicar por qué a veces es Drupal\, y a veces Drupal\\[Controller|Form|Plugin|etc.] y cómo saber cuál usar...

Aprende más sobre los estándares de espacios de nombres en Drupal. Más información sobre el uso de PSR-4 en Drupal aquí. El software de codificación correctamente configurado debería poder reconocer espacios de nombres PHP y proporcionar ayuda y autocompletado.

Inyección de dependencias

Aunque la inyección de dependencias es en realidad otro patrón de diseño OOP, lo mencionamos aquí porque Drupal 8 usa intensivamente este concepto, y es importante tener una comprensión básica para acceder y usar muchas de las API principales.

Lee sobre inyección de dependencias en PHP, así como otros artículos en esa página. Especialmente este artículo, ya que Drupal usa intensamente el contenedor de servicios Symfony al que hace referencia.

Consulta también:

Symfony

Symfony es un framework PHP del que Drupal se ha servido para reducir la duplicación de código en diversos proyectos PHP. Gran parte del código que Drupal 8 usa para gestionar rutas, sesiones y el contenedor de servicios, entre otros, proviene de Symfony 2 (y a medida que Drupal 8 evolucionó, se movió hacia Symfony 3). Si quieres saber más sobre por qué se tomó esta decisión, revisa esta presentación del principal contribuyente alexpott.

Consulta el libro de Symfony 2 y refresca tus conocimientos de Symfony. Aunque no es necesario para entender Drupal completamente, saber cómo funciona Symfony te convertirá en un mejor desarrollador Drupal y un mejor desarrollador PHP. También puede interesarte el glosario de Symfony.

Consulta el archivo core/composer.lock para ver las librerías de Symfony. A partir de Drupal 8.6.15 estas son las librerías Symfony PHP y relacionadas:

...
"symfony/class-loader": "~3.4.0",
"symfony/console": "~3.4.0",
"symfony/dependency-injection": "~3.4.26",
"symfony/event-dispatcher": "~3.4.0",
"symfony/http-foundation": "~3.4.26",
"symfony/http-kernel": "~3.4.14",
"symfony/routing": "~3.4.0",
"symfony/serializer": "~3.4.0",
"symfony/translation": "~3.4.0",
"symfony/validator": "~3.4.0",
"symfony/process": "~3.4.0",
"symfony/polyfill-iconv": "^1.0",
"symfony/yaml": "~3.4.5",
"twig/twig": "^1.38.2",
"doctrine/common": "^2.5",
"doctrine/annotations": "^1.2",
...

Anotaciones

Drupal 8 usa anotaciones PHP —comentarios @docblock añadidos a tu código con una sintaxis especial— para descubrir plugins y para proporcionar contexto/metadatos adicionales al código que se ejecuta. Las anotaciones se leen usando el analizador de anotaciones Doctrine (v.1.6.), y luego se convierten en información que Drupal puede usar para comprender mejor lo que hace tu código.

Aprende más sobre el uso de anotaciones para descubrir plugins.

Consulta el listado de todos los tipos de anotaciones en Drupal 8.

Consulta también: PHPDoc (en Wikipedia)

Plugins

Los plugins proporcionan funcionalidades pequeñas de forma que puedan ser fácilmente reemplazadas por otro plugin. Los plugins que realizan funcionalidades similares pertenecen al mismo tipo. Por ejemplo, “Widget de campo” es un tipo de plugin, y cada widget de campo específico (por ejemplo, campo de texto, campo de fecha, etc.) se implementa con un plugin.

Aprende más sobre el API de plugins en Drupal 8.

Servicios

En Drupal 8, un servicio es cualquier objeto gestionado por el contenedor de servicios. El concepto de servicios se introdujo para desacoplar funcionalidades reutilizables y hacer que estos servicios sean conectables y reemplazables, registrándolos en el contenedor de servicios e inyección de dependencias con el que están estrechamente vinculados.

Consulta también: Contenedor de servicios para Drupal Geeks

Otras fuentes

A continuación, una lista de recursos adicionales para ayudarte a familiarizarte con Drupal 8.

Drupal’s online documentation is © 2000-2020 by the individual contributors and can be used in accordance with the Creative Commons License, Attribution-ShareAlike 2.0. PHP code is distributed under the GNU General Public License.