Uno de los pilares en la arquitectura de Drupal 8 es el Sistema de Plugins.
El sistema de plugins permite definir Tipos de Plugins. Luego se pueden crear muchos Plugins de ese mismo tipo. Los plugins siempre tienen un tipo, y tiene que ser alguno de los previamente definidos. El sistema los reconoce y se "conectan" automáticamente para poder realizar todas las funciones que le corresponden de acuerdo al objetivo del tipo de plugin. De esta manera podemos tener sistemas extensibles, con elementos que se pueden conectar, para ampliar la gama de opciones de algún tipo de funcionalidad. Esta es la esencia del Sistema de Plugins. En Drupal 7 y anteriores se lograba un resultado parecido a través de los hooks info.
Un tipo de plugin es definido en un módulo. Así mismo, un plugin puede definirse en un módulo, que puede ser el mismo módulo que definió el tipo u otro.
El core de Drupal 8 viene con varios tipos de plugins incorporados. Ejemplos de tipos de plugins del core son:
- "Efectos de imagen" (Image Effects), que se usan para que se apliquen en los styles de imagen.
- "Tipos de Campo" (Field Types).
- "Controles de Campo" (Field widget), que sirven para seleccionar los valores de campo.
- "Formatos de Campo" (Field Formatters).
- "Bloques" (blocks)
- "Acciones" (Actions)
Para aclarar los conceptos tomemos como ejemplo los plugin del tipo "ImageEffect". Este tipo de plugin es definido por el módulo Image, del core de Drupal 8. Este mismo módulo define también varios plugins de este tipo, de manera que si realizamos una instalación estándar de Drupal 8, ya tendremos varios Efectos de Imagen para utilizar. La instalación mínima no instala el módulo Image, así que si hemos usado este Perfil de instalación debemos instalar el módulo Image para ver lo relatado en este artículo.
Una vez instalado el módulo, podemos dirigirnos a la URL admin/config/media/image-styles, donde aparece la lista de estilos de imagen. Un estilo de imagen es como un organizador que utiliza uno o varios efectos de imagen para obtener un resultado, al que se le llama precisamente estilo. Para poder ver la lista de efectos disponibles seleccionamos un estilo; veremos una lista como la siguiente:
Podemos ver que los efectos disponibles son los siguientes:
- Convertir
- Recortar
- Desaturar
- Redimensionar
- Girar
- Escalar
- Escalar y Recortar
Todos ellos tienen el mismo objetivo: aplicar un efecto sobre la imagen, cuando se genera el estilo. Es decir, la idea de este tipo de plugin es que se puedan añadir tantos efectos como se necesitan a los estilos. Estos efectos se añadirán uno depués del otro en el orden en que aparecen en el estilo.
Gracias a que usa el sistema de plugins, se pueden crear módulos que agregan más efectos. Cada uno de estos efectos será un nuevo plugin. Al instalar estos módulos el sistema automáticamente los reconoce y permite que se puedan usar como efectos para un style. Es decir, es un sistema extensible, que permite agregar elementos del mismo tipo. Para ilustrarlo, utilizaremos el módulo "Image Effects" ( https://www.drupal.org/project/image_effects ). Este módulo tenía el nombre de "Image Cache Actions" en Drupal 7, pero fue rebautizado con este nombre más acorde con la terminología actual.
Instalamos el módulo, de una manera estándar. Y veremos que tenemos nuevos efectos disponibles, como la marca de agua (watermark):
Como hemos indicado el sistema descubre automáticamente la existencia de nuevos plugins del mismo tipo, y puede utilizar esta información para realizar operaciones, como por ejemplo cuando muestra la lista de efectos de imagen. Internamente usa diferentes medios definidos por el tipo de plugin, como por ejemplo una convención de directorios.
Al crear un tipo de plugin se hace con un objetivo definido en mente. Todos los plugins del mismo tipo persiguen el mismo objetivo. Por ejemplo, en el caso de los plugins de tipo "Efectos de Imagen" su objetivo es aplicar un efecto sobre la imagen, como recortarla, ponerle una marca de agua, transformarla en blanco y negro, etc. En el caso de los plugins de tipo "Tipo de campo", su objetivo es, como su mismo nombre lo dice, crear un tipo de campo. En el caso de los plugins de "Tipo bloque" su objetivo es crear bloques.
Existen muchos más detalles sobre el sistema de plugins, que se usan para cubrir ciertas necesidades. Este es el caso, de cuando un plugin actúa como si fueran muchos (derivatives). Un ejemplo son los bloques. No sería conveniente instalar nuevos módulos cada vez que se necesita un nuevo bloque. Por lo que existe un plugin, que puede actuar como si fuera muchos de ellos con sus respectivas diferencias según la configuración que se ha realizado.
Este es a un nivel general lo que es el sistema de plugins de Drupal 8, en posteriores artículos mostrarmos detalles más técnicos de esta parte tan importante del CMS Drupal.
Recapitulando, el Sistema de Plugins de Drupal permite crear un sistema extensible, gracias al cual se pueden conectar plugins o elementos del mismo tipo. Para ello este tipo de plugin tiene que estar definido previamente. Estos plugins son reconocidos automáticamente por el sistema, que puede utilizarlo de acuerdo al objetivo definido para este tipo de plugin.
Me pareció interesante el artículo
Añadir nuevo comentario