Luego de entender la diferencia entre nodos y tipos de contenido, aprendamos un nuevo concepto. Los campos en Drupal permiten almacenar datos de manera atómica. Estos permiten almacenar piezas discretas de información que puede ser usada luego con fines de presentación al usuario, filtrado u ordenamiento de contenido. Los campos pueden agregarse a nodos, usuarios, términos de taxonomía, bloques y otras entidades en Drupal. Es posible compartir un campo entre bundles de la misma entidad. Por ejemplo, puedes compartir una imagen entre diferentes tipos de contenido (bundle) de la entidad de contenido (nodo).
Existen diferentes tipos de campo como texto, número, correo electrónico, número de teléfono, referencias a otras piezas de contenido (nodos, usuarios, términos de taxonomía, etc.), direcciones, archivos, imágenes, y mucho más. Los campos son provistos por módulos. Es necesario tener instalado el módulo correcto para hacer uso de dicha funcionalidad. Por ejemplo, el núcleo de Drupal incluye un campo para almacenar números de teléfono, pero es necesario habilitar manualmente el campo “Telephone” antes de poder hacer uso de él. Otros campos, como uno para almacenar direcciones, son provistos por módulos contribuidos. Veamos algunos de los beneficios de usar campos mediante un caso de uso de ejemplo.
Caso de uso de ejemplo
Imaginemos un exitoso negocio de venta de carros con más de 1000 vehículos en inventario. El plan de mercadeo para el próximo año contempla, por primera vez, tener presencia en línea. Como parte de su estrategia digital, el negocio creará perfiles en redes sociales y un sitio web. Por cada carro en inventario van a crear una entrada en sus redes sociales con detalles del vehículo. Para el sitio web usarán Drupal y crearán un tipo de contenido llamado ‘Carro’. A lo largo del ejemplo vamos a agregar campos a este tipo de contenido para almacenar atributos de los vehículos.
Haciendo que el contenido sea fácil de encontrar
Como puedes imaginar, es de suma importancia para el negocio que potenciales clientes encuentren qué vehículos están disponibles. Por el momento, consideremos un cliente visitando el perfil de una red social buscando un Toyota Yaris rojo 2010. A pesar que los sitios de redes sociales proveen herramientas para búsqueda sería muy difícil encontrar el vehículo aún si existiera. El problema es que el contenido en estas plataformas no tienen una estructura consistente. La búsqueda arrojará resultados de cualquier contenido que incluya los parámetros de búsqueda. No hay posibilidad de filtrar los resultados. Aún peor, es posible que cosas que no sean carros sean parte de la lista de resultados. Por ejemplo, un evento que tuvo lugar en 2010 o una artículo sobre las últimas innovaciones tecnológicas de Toyota.
Los campos solucionan este problema almacenando atributos específicos acerca del carro de forma separada y consistente. Esto es, va a existir un campo de Drupal por cada pieza de contenido que quieres que pueda usarse como parámetro de búsqueda. En nuestro ejemplo, habrían cuatro campos: año, color, marca y modelo. Puedes extender esta lista a medida que sea necesario. Otros posibles campos son el tipo de combustible, el tipo de transmisión, el número de puertas, etc. Cuando almacenas datos de esta forma, puedes usar otras herramientas que Drupal pone a disposición para permitir que el contenido sea fácil de encontrar. Por ejemplo, puedes crear una vista con filtros expuestos.
Cuando creamos campos, es importante seleccionar el tipo de campo adecuado para asegurar la consistencia necesaria. Por ejemplo, puedes usar una lista o referencias de términos para los campos de color, marca y modelo. Esto va a evitar tener dos registros que representen el mismo valor. Imagina los colores “azul claro” y “azul cielo” representando el mismo color. También, vas a evitar que se introduzcan errores ortográficos como “maseratti” en lugar de el valor correcto “maserati”. Para el campo año, puedes adoptar la misma estrategia o usar un campo de tipo número entero. Lo que hay que tomar en cuenta es que en un campo de número entero se puede ingresar datos inconsistentes o inválidos. Un usuario puede introducir el año “20010” o “97” en lugar de “1997” para el campo año. Por supuesto, esto puede prevenirse estableciendo valores mínimos y máximos en la configuración del campo. Dado que no vamos a realizar operaciones matemáticas en el valor de año como calcular promedios, usar una lista o referencias de términos es válido en este caso.
Manteniendo los datos consistentes
Las entradas en redes sociales y el campo “cuerpo” en Drupal son como un lienzo en blanco. Las personas pueden escribir poemas, subir imágenes de sus últimas obras de arte y de forma general cualquier cosa que quieran. Esta libertad suele venir acompañada de inconsistencia de datos. Cuando la oportunidad se les presente, los editores van a tomar atajos cuando creen contenido. Veamos un ejemplo sencillo con fechas:
- 2 de Julio, 2017
- 2 de Julio, 17
- 07/02/17
- 07-02-17
- 02-07-17
Estos y muchos otros son posibles valores que un editor de contenido puede usar. Imaginemos que en el negocio de venta de carros necesitamos saber cuándo un vehículo fue agregado al inventario para medir qué tan rápido se venden. Esta pieza de información clave puede ser difícil de extraer si hay inconsistencias en la forma en que la información fue registrada. La persona responsable de general el reporte tendrá que ocupar tiempo adicional corrigiendo las inconsistencias haciendo el proceso ineficiente. Aún peor, para casos como 07-02-17, ¿se refiere al 2 de Julio o al 7 de Febrero? El punto es, necesitamos ser más restrictivos en la manera en que recolectamos la información.
Los campos de Drupal se lucen en prevenir inconsistencia de datos. Puedes especificar un formato en particular que debe ser usado. Por ejemplo, puedes configurar el campo de fecha para se introduzca en formato día/mes/año-4-dígitos (e.g. 31/12/1999). Adicionalmente, puedes proveer un calendario haciendo el proceso de selección de fechas más sencillo al poder hacer clic (sobre la fecha adecuada) en lugar de tener que escribirla. Para el campo de fecha, esto se configura en la pestaña “Administrar la visualización del formulario” de la configuración del tipo de contenido.
Nota técnica: Los campos no sólo mantienen consistencia visual. Estos también mantienen la consistencia de los datos a nivel de almacenamiento (en la base de datos). Esto es importante pues permite realizar operaciones de procesamiento, filtrado y ordenamiento sobre los datos recolectados.
Previniendo datos inválidos
En las redes sociales y el campo “cuerpo” de Drupal es virtualmente imposible establecer reglas de validación en los datos que se almacenan. Veamos los siguientes ejemplos:
- Edad: -10 años (edad negativa)
- Precio: E10 dólares (símbolo de moneda incorrecto)
- Fecha: 31 de Febrero, 2000
- Correo electrónico: casiunadireccionreal.com (falta el símbolo @)
- Número de teléfono: Soy guapo 😀 (ni siquiera es un número)
Los campos permiten establecer criterios de validación de forma sencilla. La primera línea de defensa es seleccionar el tipo de campo adecuado. Al hacer esto, Drupal realizará validaciones sensatas como requerir un símbolo de arroba (@) en una dirección de correo electrónica. ¡Pero hay más! Marcar un campo como requerido previene que se creen nodos si dicho campo se estuviera dejando vacío. Para campos numéricos es posible definir mínimos y máximos como un rango de 1970 a 1979 en el campo de fechas para solamente permitir carros fabricados en la década de los 70s. Para campos numéricos también es posible establecer prefijos y sufijos como $ y “dólares” respectivamente para el campo de precio. Campos de imágenes puedes establecer restricciones en las extensiones de archivos a usar, resolución mínima y máxima, y tamaño máximo del archivo. Diferentes tipos de campos ofrecerán diferentes criterios de validación. Asegúrate de usar el tipo de campo correcto para los datos a almacenar.
Múltiples formatos de entrada y salida
El nuevo plan de mercadeo del negocio de venta de carros incluye realizar eventos en diferentes lugares donde los carros de lujo serán exhibidos. La segunda fase del proyecto del sitio web contempla agregar un mapa interactivo que presenta la ubicación de eventos futuros. Los campos de Drupal son tan flexibles que permiten recolectar la información de diferentes formatos. Usando el ejemplo antes descrito, podemos tener un campo de ubicación que permita recolectar la información en diferentes formatos:
- Una dirección. Eg: 123, Calle Cellar
- Un par de latitud y longitud. Eg: 12.136389, -86.251389
- Un mapa que permite sobre el cual hacer clic para seleccionar la ubicación.
- Un campo de subir archivos que permite el formato KML (este tipo de archivo almacena información geográfica).
Nota: no hay un único campo en Drupal que permita esta cuatro maneras de introducir datos de ubicación, pero es posible crearlo.
De la misma manera en que se pueden aceptar distintos formatos de entrada, un campo puede presentar la información que almacena de múltiples maneras. Por ejemplo, el creador de contenido puede introducir la ubicación como una dirección, pero esta se presenta sobre un mapa. De hecho, una vez que los datos han sido recolectados es posible agregarlos y presentar el resumen. Un buen ejemplo de agregación datos geográficos es drupical.com Este sitio web recolecta información de eventos sobre Drupal que ocurren en todo el mundo y los muestra sobre un mapa interactivo. Nota que los marcadores sobre el mapa tienen un código de color. Para hacer esto, un color es asignado al campo que almacena el tipo de evento y este color se usa luego en el marcador. Sí, es posible combinar datos de campos diferentes en una misma presentación.
Control de visibilidad
Establecer controles de visibilidad es otro ejemplo de la versatilidad de los campos en Drupal. Es posible mostrar y ocultar contenido de un nodo a nivel de campos. Consideremos la siguiente política del negocio de venta de carros: “Para reconocer la lealtad de los colaboradores, cualquier persona que haya trabajado en la empresa por al menos 3 años recibirá un descuento de 20%.” Para permitir esto, se crearán dos campos: “Precio” y “Precio descontado.” El precio con descuento debe ocultarse de todos excepto los colaboradores que cumplen con la condición establecida. Por tanto, podemos ocultar el campo “Precio descontado” por defecto y mostrarlo dependiendo del rol del usuario que está viendo el vehículo. El precio regular usaría la lógica contraria.
Versatilidad a tu disposición
Los campos son el centro del sistema de modelado de contenido en Drupal. Úsalos adecuadamente para brindar una buena experiencia de usuario. Los creadores de contenido podrán agregar datos de forma válida y consistente. Por su parte, los visitantes del sitio podrán encontrar la información que necesitan.
¿Sabías que los campos de Drupal eran tan versátiles, flexibles y poderosos? ¿Puedes pensar otros casos de usos para la información expuesta? ¿Conoces otros consejos sobre el uso de campo en Drupal que te gustaría compartir?