Formdazzle!
Proporciona sugerencias de tema útiles para formularios de Drupal, haciendo que la tematización de formularios sea significativamente más fácil y menos laboriosa.
formdazzle
Install
composer require 'drupal/formdazzle:^4.0'
composer require 'drupal/formdazzle:^3.0'
composer require 'drupal/formdazzle:^2.1'
Overview
Formdazzle! es un módulo de Drupal que simplifica la desafiante tarea de tematizar formularios de Drupal. Agrega automáticamente sugerencias de tema significativas a todos los elementos de formulario, incluidos botones y etiquetas, facilitando mucho la orientación de elementos de formulario específicos con plantillas personalizadas.
Mientras que Drupal core solo proporciona sugerencias de tema básicas como input.html.twig e input--textfield.html.twig, Formdazzle extiende esto con sugerencias específicas de formulario y elemento como input--textfield--[form-id].html.twig e input--textfield--[form-id]--[element-name].html.twig.
El módulo también mejora la depuración de Twig agregando comentarios a los formularios para sugerencias de plantilla ocultas que Drupal core no muestra por defecto.
Features
- Sugerencias de tema para todos los elementos de formulario incluyendo botones, campos de texto, selects, checkboxes, etc.
- Sugerencias de tema para todas las etiquetas de elementos de formulario
- Las sugerencias incluyen tanto el ID del formulario como el nombre del elemento para una orientación precisa (ej., input--textfield--contact-form--first-name.html.twig)
- Comentarios de depuración de Twig mejorados que muestran sugerencias de plantilla para formularios
- Manejo especial para formularios Webform con sugerencias de ID de formulario simplificadas
- Manejo especial para formularios expuestos de Views incluyendo el nombre de la View y el ID de visualización en las sugerencias
- Implementación no intrusiva usando callbacks de pre-renderizado que se ejecutan después de todos los hooks form_alter
Use Cases
Estilizar un campo de formulario específico
Cree un archivo de plantilla como input--textfield--contact-form--email.html.twig para personalizar la apariencia solo del campo de correo electrónico en su formulario de contacto, sin afectar otros campos de texto.
Tematizar todos los campos en un formulario específico
Cree input--textfield--user-login-form.html.twig para estilizar todos los campos de texto dentro del formulario de inicio de sesión, o form-element--user-login-form.html.twig para todos los envoltorios de elementos de formulario.
Plantillas personalizadas para campos de Webform
Para un Webform con nombre de máquina 'feedback', cree plantillas como input--textfield--webform-feedback--comments.html.twig para dirigirse a campos específicos de Webform.
Tematización de filtros expuestos de Views
Estilice los filtros expuestos para una View específica usando plantillas como input--textfield--views--search--page-1.html.twig donde 'search' es el ID de la View y 'page-1' es el ID de visualización.
Depuración de sugerencias de plantilla de formulario
Con la depuración de Twig habilitada, vea el código fuente HTML para ver comentarios que listan todas las sugerencias de plantilla disponibles para formularios, incluyendo sugerencias que Drupal core no muestra por defecto.
Tips
- Habilite la depuración de Twig en development.services.yml para ver todas las sugerencias de tema disponibles en su código fuente HTML
- Las sugerencias de tema siguen el patrón: [element-type]__[form-id]__[element-name].html.twig
- Para formularios expuestos de Views, el patrón usa el ID de la View y el ID de visualización en lugar de 'views_exposed_form'
- Para Webforms, el patrón usa 'webform_[machine-name]' para sugerencias más limpias
- El módulo establece su peso en 10 durante la instalación para asegurar que se ejecute después de otros módulos
- No se necesita configuración - el módulo funciona automáticamente una vez habilitado
- El módulo usa callbacks de pre-renderizado para asegurar que las sugerencias se agreguen después de que todas las alteraciones de formulario estén completas
Technical Details
Hooks 3
hook_module_implements_alter
Asegura que la implementación form_alter de formdazzle se ejecute en último lugar, después de que todos los demás módulos hayan alterado el formulario. Esto permite que Formdazzle agregue sugerencias a la estructura final del formulario.
hook_form_alter
Agrega un callback de pre-renderizado a todos los formularios. En lugar de alterar los formularios directamente, Formdazzle espera hasta la fase de pre-renderizado para agregar sugerencias de tema, asegurando que todas las demás alteraciones estén completas.
hook_preprocess_HOOK (form_element)
Agrega sugerencias de tema a las etiquetas de elementos de formulario. La propiedad #theme de la etiqueta no puede ser alterada hasta esta función porque se crea incondicionalmente en template_preprocess_form_element().
Troubleshooting 3
Asegúrese de que la depuración de Twig esté habilitada en su archivo development.services.yml. Configure 'debug: true' bajo twig.config.
Limpie la caché de Drupal después de crear nuevos archivos de plantilla. Use 'drush cr' o limpie la caché mediante la interfaz de administración.
El módulo agrega sugerencias durante la fase de pre-renderizado. Si un formulario omite el renderizado normal, las sugerencias pueden no agregarse.