Field Config Cardinality

Permite establecer diferentes límites de cardinalidad (número de valores) en instancias de campo individuales, anulando la cardinalidad del almacenamiento de campo por bundle.

field_config_cardinality
3,460 sites
39
drupal.org

Install

Drupal 11, 10 v4.0.1
composer require 'drupal/field_config_cardinality:^4.0'
Drupal 9 v3.0.1
composer require 'drupal/field_config_cardinality:^3.0'
Drupal 8 v8.x-1.2
composer require 'drupal/field_config_cardinality:8.x-1.2'

Overview

Field Config Cardinality proporciona la capacidad de configurar diferentes límites de cardinalidad para el mismo campo en diferentes bundles (tipos de contenido, tipos de entidad, etc.). En Drupal core, la cardinalidad del campo se define a nivel de almacenamiento del campo, lo que significa que todas las instancias de un campo comparten la misma configuración de cardinalidad. Este módulo añade una anulación de cardinalidad a nivel de instancia que permite a los administradores establecer diferentes límites de valores por bundle.

Por ejemplo, si tienes un campo de referencia a entidad 'Etiquetas' con cardinalidad ilimitada a nivel de almacenamiento, puedes usar este módulo para limitar los Artículos a 5 etiquetas mientras permites que las Páginas tengan etiquetas ilimitadas. El módulo logra esto almacenando la configuración de cardinalidad como configuraciones de terceros en la entidad de configuración del campo.

El módulo también proporciona widgets de campo mejorados que respetan la configuración de cardinalidad de instancia, incluyendo versiones modificadas de los widgets Options Select, Entity Reference Autocomplete y Media Library. Además, soporta texto de etiqueta vacía personalizable para widgets de selección basado en la cardinalidad y el estado de campo requerido.

Features

  • Establecer cardinalidad a nivel de instancia para campos que anula la cardinalidad del almacenamiento del campo por bundle
  • Soporte para limitar campos de cardinalidad ilimitada a un número específico en ciertos bundles
  • Compatible con campos de referencia a entidad, campos de lista (integer, float, string), campos de archivo/imagen y campos de media library
  • Widgets personalizados que aplican correctamente la cardinalidad de instancia: Lista de selección con soporte de cardinalidad, Entity Reference Autocomplete con soporte de cardinalidad, Media Library con soporte de cardinalidad
  • Texto de etiqueta vacía personalizable para widgets de selección con diferentes etiquetas para estados ilimitado/limitado y requerido/no requerido
  • Ocultación automática del botón 'Añadir más' cuando se alcanza el límite de cardinalidad de instancia
  • Respeta la cardinalidad máxima definida a nivel de almacenamiento (no puede exceder la cardinalidad de almacenamiento)

Use Cases

Limitar etiquetas en diferentes tipos de contenido

Tienes un campo de referencia a taxonomía 'Etiquetas' compartido entre múltiples tipos de contenido con cardinalidad ilimitada a nivel de almacenamiento. Usando este módulo, puedes limitar los Artículos a 5 etiquetas, las Entradas de blog a 10 etiquetas, y dejar las Páginas con etiquetas ilimitadas. Esto proporciona flexibilidad en la gobernanza del contenido mientras se usa un único campo compartido.

Restringir elementos multimedia por bundle

Un campo de referencia a multimedia 'Imágenes de galería' está configurado como ilimitado en el almacenamiento. Para el tipo de contenido Producto, quieres permitir solo 4 imágenes, mientras que para elementos de Portafolio quieres ilimitadas. Este módulo permite esta restricción por bundle usando el widget Media Library.

Anulación de valor único para referencia a entidad

Un campo de referencia a entidad 'Autor' referencia entidades Usuario y tiene cardinalidad ilimitada en el almacenamiento. Para artículos de Noticias, quieres permitir múltiples autores, pero para Páginas simples, quieres exactamente un autor. Estableciendo la cardinalidad de instancia en 1 para Página simple, el widget de autocompletado muestra un único campo en lugar de una interfaz de múltiples valores.

Etiquetas vacías personalizadas para mejor UX

Tienes un campo de lista 'Prioridad' que necesita diferente texto de marcador de posición según el contexto. En campos requeridos quieres '- Seleccionar prioridad -' como marcador de posición, mientras que en campos opcionales quieres '- Sin prioridad -'. La personalización de etiquetas vacías de este módulo permite adaptar la experiencia de usuario por instancia de campo.

Límites de carga de archivos por tipo de contenido

Un campo de archivo 'Documentos' está establecido como ilimitado a nivel de almacenamiento. Para perfiles de Usuario, quieres limitar las cargas de documentos a 3 archivos, mientras que las páginas de Administración pueden tener ilimitados. El módulo aplica esto ocultando espacios de carga adicionales más allá del límite de cardinalidad de instancia.

Tips

  • La cardinalidad de instancia no puede exceder la cardinalidad del almacenamiento del campo - asegúrate de que tu cardinalidad de almacenamiento esté configurada suficientemente alta o como ilimitada
  • Cuando uses la opción 'Ilimitado' para la cardinalidad de instancia, el almacenamiento del campo también debe estar configurado como ilimitado
  • El módulo modifica los widgets de core a través de hook_field_widget_info_alter, lo que puede entrar en conflicto con otros módulos que modifiquen los mismos widgets
  • Las configuraciones de terceros se incluyen en las exportaciones de configuración, por lo que los ajustes de cardinalidad se exportarán al usar drush config:export
  • Para widgets de selección, usa CardinalityOptionsSelectWidget explícitamente para obtener soporte completo para etiquetas vacías personalizadas
  • Al establecer la cardinalidad de instancia en 1 en un campo de múltiples valores, el comportamiento del widget cambia a modo de valor único, ocultando el botón 'Añadir otro'

Technical Details

Admin Pages 1
Configuración de campo (con cardinalidad de instancia) /admin/structure/types/manage/{type}/fields/{field}/edit

El módulo extiende el formulario estándar de edición de configuración de campo con ajustes adicionales de cardinalidad. Estos ajustes aparecen como un nuevo grupo de campos en la página de edición de campo existente, permitiendo a los administradores establecer un límite de cardinalidad diferente para esta instancia de campo específica.

Hooks 4
hook_field_widget_info_alter

Reemplaza las clases predeterminadas de los widgets media_library_widget y entity_reference_autocomplete con clases personalizadas que soportan cardinalidad de instancia.

hook_form_alter (field_config_edit_form)

Añade el grupo de campos 'Cardinalidad de instancia' al formulario de edición de configuración de campo, permitiendo a los administradores establecer la cardinalidad a nivel de instancia y las opciones de etiqueta vacía.

hook_field_widget_complete_form_alter

Aplica la configuración de cardinalidad de instancia a los widgets de campo durante el renderizado del formulario. Maneja los campos managed_file ocultando elementos más allá del límite de cardinalidad, y convierte multi-selección a selección única cuando la cardinalidad es 1.

hook_preprocess_field_multiple_value_form

Modifica el renderizado de campos de múltiples valores para limitar los elementos visibles basándose en la cardinalidad de instancia. Oculta el botón 'Añadir más' cuando se alcanza el límite de cardinalidad.

Security Notes 2
  • El módulo añade elementos de formulario a páginas de configuración de campo solo para administradores, que están protegidas por los permisos de campo existentes de Drupal
  • La cardinalidad de instancia se aplica a nivel de formulario; puede ser necesaria validación adicional del lado del servidor para envíos de API