MaxLength

Permite a los administradores del sitio establecer límites de caracteres estrictos o flexibles en títulos, campos de texto y campos de enlace con conteo de caracteres en tiempo real.

maxlength
53,660 sites
78
drupal.org

Install

Drupal 11 v3.1.3
composer require 'drupal/maxlength:^3.1'
Drupal 10, 9 v2.1.6
composer require 'drupal/maxlength:^2.1'

Overview

MaxLength es un módulo completo de limitación de caracteres para Drupal que permite a los administradores del sitio establecer límites de caracteres en varios campos de entrada de texto. Proporciona conteo de caracteres en tiempo real con mensajes de cuenta regresiva personalizables que se muestran debajo de los campos de entrada.

El módulo admite dos tipos de límites: límites flexibles que muestran una advertencia cuando se exceden (mostrando conteos negativos) y límites estrictos que impiden a los usuarios escribir más allá del conteo de caracteres especificado. Maneja inteligentemente el contenido HTML contando solo los caracteres de texto visibles mientras preserva la estructura de etiquetas HTML durante el truncamiento.

MaxLength se integra perfectamente con el sistema de widgets de campos de Drupal, permitiendo configurar límites por campo a través de la interfaz de Administrar presentación del formulario. Admite campos de texto estándar, áreas de texto, campos de texto con resumen (con límites separados para contenido y resumen), campos de enlace y el editor WYSIWYG CKEditor 5. El módulo también incluye características de accesibilidad con anuncios para lectores de pantalla en hitos clave del conteo de caracteres.

Features

  • Conteo de caracteres en tiempo real con mensajes de cuenta regresiva personalizables usando los marcadores @limit, @remaining y @count
  • Modo de límite flexible que muestra advertencia cuando se excede el conteo de caracteres, mostrando el conteo restante negativo
  • Modo de límite estricto que impide a los usuarios escribir más allá del límite de caracteres especificado
  • Conteo de caracteres consciente de HTML que solo cuenta texto visible, ignorando etiquetas HTML y manejando correctamente las entidades HTML
  • Truncamiento seguro de HTML que preserva la estructura de etiquetas al aplicar límites estrictos
  • Límites de caracteres separados para campos de contenido y resumen en widgets text_textarea_with_summary
  • Integración completa con CKEditor 5 con detección automática y conteo de caracteres dentro del editor WYSIWYG
  • Soporte para texto de título de campos de enlace con aplicación automática del máximo de 255 caracteres
  • Soporte de accesibilidad con anuncios para lectores de pantalla a 10 caracteres restantes, 0 caracteres restantes y cuando se excede el límite
  • Arquitectura extensible que permite a otros módulos agregar soporte de MaxLength a widgets personalizados mediante hook_maxlength_widget_settings()
  • Configuración por campo a través de la interfaz estándar de Administrar presentación del formulario de Drupal

Use Cases

Limitar la longitud del título de artículos para SEO

Establezca un límite de 60 caracteres en los títulos de artículos para asegurar que se muestren correctamente en los resultados de motores de búsqueda. Navegue a Estructura > Tipos de contenido > Artículo > Administrar presentación del formulario, configure los ajustes de MaxLength del widget de título con un límite de 60 caracteres y habilite el límite estricto para evitar que los autores lo excedan.

Preparación de publicaciones para redes sociales

Cree un campo de texto para extractos de redes sociales con un límite de 280 caracteres (límite de caracteres de Twitter/X). Use el modo de límite flexible para advertir a los autores cuando excedan el límite mientras aún les permite ver cuánto lo han excedido.

Gestión del campo de resumen

Para campos de cuerpo con resumen, establezca límites separados como 160 caracteres para el resumen (ideal para meta descripciones) y 5000 caracteres para el cuerpo principal. Los mensajes de cuenta regresiva ayudan a los autores a escribir resúmenes concisos.

Estandarización del texto de enlaces

Limite los títulos de campos de enlace a 50 caracteres para asegurar una visualización consistente en menús de navegación o botones de llamada a la acción. Habilite el límite estricto para aplicar esto de manera estricta.

Integración de widgets personalizados

Si su sitio usa un widget de campo personalizado, implemente hook_maxlength_widget_settings() en su módulo para habilitar el soporte de MaxLength. Devuelva un array que mapee el ID de su widget a las configuraciones que debe soportar (maxlength_setting, summary_maxlength_setting, truncate_setting).

Tips

  • Use límites flexibles durante la migración de contenido para identificar contenido que excede los límites sin bloquear la importación
  • El mensaje de cuenta regresiva predeterminado 'Content limited to @limit characters, remaining: <strong>@remaining</strong>' puede personalizarse por campo para proporcionar orientación específica del contexto
  • Para sitios multilingües, los límites de caracteres pueden necesitar ajustes ya que las traducciones a menudo varían en longitud
  • El modo de límite estricto maneja HTML de manera inteligente, truncando en el límite de caracteres mientras cierra correctamente cualquier etiqueta HTML abierta
  • Los usuarios de lectores de pantalla reciben anuncios a 10 caracteres restantes, 0 caracteres restantes y cuando se excede el límite para accesibilidad

Technical Details

Hooks 5
hook_maxlength_widget_settings

Permite a los módulos definir tipos de widgets adicionales que deben soportar configuraciones de MaxLength. Use este hook para agregar funcionalidad de MaxLength a widgets de campo personalizados.

hook_element_info_alter

MaxLength usa este hook para agregar callbacks de pre_render y process a los elementos de formulario textfield, textarea y text_format para adjuntar la funcionalidad del contador de caracteres.

hook_field_widget_third_party_settings_form

MaxLength implementa este hook para agregar su formulario de configuración a los widgets de campo soportados en la página Administrar presentación del formulario.

hook_field_widget_settings_summary_alter

MaxLength implementa este hook para mostrar los límites configurados en el resumen de configuración del widget en la página Administrar presentación del formulario.

hook_field_widget_single_element_form_alter

MaxLength implementa este hook para aplicar las configuraciones de límite de caracteres configuradas a los elementos del formulario del widget de campo en tiempo de renderizado.

Troubleshooting 5
El contador de caracteres no aparece en el campo

Asegúrese de que las configuraciones de MaxLength estén configuradas en Administrar presentación del formulario para ese campo específico. Verifique que se haya establecido un valor de longitud máxima (no vacío). Verifique que JavaScript esté habilitado y que no aparezcan errores de JS en la consola del navegador.

El conteo de caracteres es incorrecto para texto formateado

MaxLength cuenta solo el texto visible, eliminando las etiquetas HTML. Las entidades HTML se cuentan como caracteres individuales. Este es un comportamiento intencional para reflejar la longitud real del contenido que verán los usuarios.

El límite estricto no funciona en CKEditor 5

Puede haber un ligero retraso (400ms) para la inicialización de CKEditor 5. Si los problemas persisten, verifique que el módulo CKEditor 5 esté habilitado. El módulo usa MutationObserver para manejar los cambios de formato de texto.

MaxLength no funciona en widget personalizado

Los widgets personalizados requieren soporte explícito mediante hook_maxlength_widget_settings(). Implemente este hook en su módulo para registrar su widget con las configuraciones apropiadas.

El mensaje del contador no muestra los valores de los marcadores

Use @limit para caracteres máximos, @remaining para caracteres restantes y @count para el conteo actual de caracteres en su mensaje personalizado. Asegúrese de incluir el símbolo @ antes de cada nombre de marcador.