
A diferencia de Drupal 7, crear múltiples instancias de un bloque para colocarlas en tu sitio es una tarea sencilla en Drupal 8.
En esta guía aprenderás cómo agregar programáticamente un bloque en la interfaz de diseño de bloques. Cómo agregar un formulario de configuración (administrativo) en el bloque y cómo manejarlo. Finalmente, aprenderás cómo agregar y mostrar valores de configuración predeterminados para el formulario.


Los bloques en Drupal 8 son instancias de plugins de bloque.
El Administrador de bloques de Drupal escanea tus módulos en busca de clases que contengan la anotación @Block.
El siguiente ejemplo de código usa la anotación @Block junto con las propiedades "id" y "admin_label" para definir un bloque personalizado.


Ahora digamos que queremos permitir al constructor del sitio introducir parte de la configuración para cada instancia de nuestro bloque personalizado. Siempre tenga en cuenta que toda la configuración del constructor del sitio en Drupal 8 puede exportarse desde el sitio de desarrollo e importarse al sitio en producción (conocido como Gestión de configuración).


Agregue el siguiente método a la clase HelloBlock. En este ejemplo, se encuentra en el archivo src/Plugin/Block/HelloBlock.php, pero, a medida que comienza a pensar en un modo más orientado a objetos, la ubicación física en la estructura de archivos es menos importante que el espacio de nombres. Si usted es un programador OO muy inteligente, mantiene estas dos cosas muy alineadas.


Para usar la configuración de instancias del bloque, podemos modificar el método build() de la clase HelloBlock:
/** * {@inheritdoc} */ public function build() { $config = $this->getConfiguration(); if (!empty($config['hello_block_name'])) { $name = $config['hello_block_name']; } else { $name = $this->t('a nadie'); } return [ '#markup' => $this->t('¡Hola @name!', [ '@name' => $name, ]), ]; }


Parte V de la Guía práctica para crear módulos básicos en Drupal 8
De .info a tests, solo lo básico
Recuerden que al comienzo de esta lección mencioné que íbamos a definir un bloque con un formulario? Bueno, ahora es el momento de abordarlo.


Esta guía incluye tutoriales para crear un tipo de campo personalizado, un widget y un formateador en Drupal 8.


Este tutorial fue publicado originalmente en Web Wash. Sin embargo, Berdir preguntó si podía publicarlo aquí, así que aquí está.
Un módulo en Drupal 7 permite almacenar ejemplos de código o fragmentos en un campo. Viene con un campo personalizado llamado "Campo de fragmentos" y muestra tres elementos de formulario: descripción, código fuente y modo de resaltado de sintaxis (qué lenguaje de programación).
Pero ahora es momento de actualizar el módulo para Drupal 8.


En Drupal 8, todos los tipos de campo, widgets y formateadores son plugins.
Se descubren automáticamente si se colocan en la estructura de directorios esperada y usan la anotación correcta.
La estructura de directorios para un módulo que implemente los tres es la siguiente:
foo_bar_fields


Los tipos de campo definen las propiedades y el comportamiento de los campos. Los tipos de campo se definen como plugins, por lo que se recomienda revisar la API de plugins antes de comenzar a escribir un nuevo tipo de campo.
Para crear un tipo de campo en Drupal 8, necesitas una clase con la anotación FieldType.
La ubicación de la clase del tipo de campo debe ser MODULE_NAME/src/Plugin/Field/FieldType
Ejemplo: /modules/foo/src/Plugin/Field/FieldType/BazItem.php
