Entre sus muchas funciones, Drupal, uno de los CMS más poderosos del mercado, le permite al usuario crear campos personalizados para poder dar solución a alguna necesidad específica que tenga el sitio web en el que se está trabajando.
“Desarrollar vistas en Drupal ofrece una gran versatilidad de campos a añadir para personalizar nuestro sitio, pero ¿Qué ocurre cuando necesitamos que los datos recogidos tengan un aspecto muy específico, o información que no ofrecen estos campos? En esos casos, tenemos una solución única: crear un campo personalizado en las vistas” explican sobre el tema en el portal especializado Escuela Drupal.
Los complementos son pequeñas piezas de funcionalidad que se pueden intercambiar. Los complementos que realizan funciones similares son del mismo tipo de complemento.
Drupal contiene muchos complementos diferentes, de diferentes tipos. Por ejemplo, el 'widget de campo' es un tipo de complemento y cada tipo de widget de campo diferente es un complemento. El usuario administrador puede seleccionar de la lista de complementos de widgets de campo para configurar el widget que utiliza un campo.
Drupal viene con una gran biblioteca de clases base que te permiten trabajar con tu propio contenido. Cuando se trata de entidades de contenido, desea utilizar Campos. Es importante comprender los campos, ya que es allí donde sus entidades almacenan sus datos.
En la API Field, cada campo tiene un tipo, que determina qué tipo de datos (entero, cadena, fecha, etc.) puede contener el campo, qué configuraciones proporciona, etc. Los tipos de datos aceptados por un campo se definen en la clase que implementa el método \Drupal\Core\Field\FieldItemInterface::schema().
Los tipos de campo son complementos anotados con la clase \Drupal\Core\Field\Annotation\FieldType e implementan la interfaz del complemento \Drupal\Core\Field\FieldItemInterface. Los complementos de tipo de campo son administrados por la clase \Drupal\Core\Field\FieldTypePluginManager. Las clases de tipo de campo generalmente extienden la clase base \Drupal\Core\Field\FieldItemBase. Los complementos de tipo campo deben estar en el espacio de nombres \Drupal\{your_module}\Plugin\Field\FieldType. Consulte el tema API de complementos para obtener más información sobre cómo definir complementos.
La API de tipos de campo también define dos tipos de controladores conectables: widgets y formateadores. Los widgets especifican cómo aparece el campo en los formularios de edición, mientras que los formateadores especifican cómo aparece el campo en las entidades mostradas.
Siempre que desee representar datos de una manera que Drupal no proporciona; es posible que desee crear un nuevo tipo de campo para sus datos.
En la documentación oficial de Drupal, ofrecen información sobre los distintos tipos de campo personalizado y lo que se requiere para crear cada uno. Explican:
Los campos estilo types le permiten almacenar diferentes tipos de datos. Describe, define y expone un tipo de campo a Drupal mediante una anotación FieldType. Analizaremos cada una de estas anotaciones con más profundidad en tutoriales separados. La anotación FieldType que define el tipo de campo booleano se puede encontrar en /core/lib/Drupal/Core/Field/Plugin/Field/FieldType/BooleanItem.php. Proporciona una identificación única, así como una etiqueta y descripción legibles por humanos.
Una vez que tengamos nuestro tipo de campo definido, debemos definir el widget de campo. Los widgets de campo ayudan a determinar cómo Drupal debe representar el campo en el formulario de edición. Se especifican con una anotación FieldWidget. El widget para el campo booleano se puede encontrar en /core/lib/Drupal/Core/Field/Plugin/Field/FieldWidget/BooleanCheckboxWidget.php. Nuevamente, esta anotación proporciona una identificación única y una etiqueta legible por humanos. También proporciona metadatos sobre qué tipos de campos admite y si permite o no múltiples valores. Observe cómo la identificación de esta anotación coincide con el widget_predeterminado especificado por el tipo de campo.
El último componente principal de Field API es un formateador de campos. Los formateadores de campos proporcionan el código responsable de la salida final del campo para el usuario final. Estos se especifican mediante una anotación FieldFormatter. La anotación para el campo booleano se puede encontrar en /core/lib/Drupal/Core/Field/Plugin/Field/FieldFormatter/BooleanFormatter.php. A esta altura este patrón debería resultarle bastante familiar. La anotación del formateador también proporciona una identificación única y una etiqueta legible por humanos. Al igual que el widget, también incluye una lista de tipos de campos admitidos.
Si bien las anotaciones por sí solas no son suficientes para crear un nuevo campo desde cero, comprender estos complementos puede ayudarnos a encontrar e identificar campos, widgets y formateadores proporcionados por nuestro código base.