Plugins en Drupal 8

El código de Drupal 8 es diferente del de versiones anteriores. Se han adoptado conceptos y estandares modernos, la programación es ahora mayoritariamente orientada a objetos y se usan componentes de Symfony. 
 
Ahora crear un módulo, una página o un bloque es totalmente diferente. Mi intención con esta serie de artículos es mostrar como se hace ahora para facilitaros el paso a esta nueva versión que vale mucho la pena.

Puedes leer otros artículos de esta serie:
  1. Crear un módulo para Drupal 8
  2. Crear una página desde un módulo para Drupal 8
  3. Añadir parametros a una página en Drupal 8
  4. Plugins en Drupal 8
  5. Crear un bloque en Drupal 8
 

¿Qué es un Plugin?

 
En informàtica, un plugin es una aplicación que se relaciona con otra para agregarle una función nueva y generalmente muy especifica. Esta aplicación adicional es ejecutada por la aplicación principal e interactúan por medio de una API.
 
En Drupal 8 se hace un uso intensivo de este concepto. Un plugin puede servir para generar un bloque, una entidad, un tipo de campo y muchos otros elementos. De hecho, la mayoria de los elementos que en versiones anteriores se definian usando un hook parecido a  `hook_ELEMENT_info` son ahora plugins y utilizan una API común, la Plugin API.
 

¿Cómo funcionan los plugins en Drupal 8?

 
Un plugin en Drupal 8 es una clase. Cada tipo de plugin se define en un plugin manager, una clase que implementa la interfaz `PluginManagerInterface` y que define:
 
  • como se descubriran los plugins de ese tipo,
  • como se instanciarán las clases que los definen,
  • que anotaciones deben tener y
  • que interfaz debe implementar.
 
Drupal proporciona implementaciones base para crear el plugin manager, diferentes políticas para instanciar las clases, para definir diferentes formas de descubrir plugins y diferentes formatos de anotaciones haciendo realmente sencillo crear nuestros propios tipos de plugins.
 
Normalmente, además, se suele incluir una clase base que implementa el código de la interfaz del nuevo tipo de plugin de forma generica. Así, solo debemos preocuparnos de sobreescribir las funciones necesarias para proporcionarle a nuestro plugin de la funcionalidad que queremos.
 
 

¿Cómo creamos un plugin en Drupal 8?

Para crear un nuevo plugin debemos hacerlo dentro de nuestro propio módulo.
 
Lo primero es crear el archivo que ha de contener la clase que define nuestro plugin. Para ello debemos seguir PSR-4, un estandar que determina la estructura de carpetas y archivos para facilitar su carga automática. El lugar vendrá definido por el tipo de plugin. Por ejemplo, para un bloque debemos crear el archivo en la carpeta `src/Plugin/Block` o para un tipo de campo en `src/Plugin/Field/FieldType`.
 
Nuestro archivo debe contener una clase anotada. Antés de la linea que define la clase se deberá incluir un bloque de comentarios con ciertas lineas que proporcionen la metainformación necesaria sobre el plugin, por ejemplo, para el plugin que implementa el formateador por defecto de los campos de texto, su anotación es:
 
    @FieldFormatter(
      id = "text_default",
      label = @Translation("Default"),
      field_types = {
        "text",
        "text_long",
        "text_with_summary",
      },
      quickedit = {
        "editor" = "plain_text"
      }
    )

 

 
Nuestra clase debe implementar una interfaz diferente dependiendo de cada tipo de plugin, por ejemplo, un plugin que crea un tipo de entidad debe implementar `Drupal\Core\Entity\EntityInterface`. La mejor opción es utilizar la implementación base proporcionada, en este ejemplo seria `\Drupal\Core\Entity\Entity`.
 
En próximos artículos crearemos al plugin en concreto, como un bloque.

 

Contact

Are you interested in our services?

Contact us