Require on Publish
Permite marcar campos como obligatorios solo cuando el contenido se está publicando, en lugar de ser siempre obligatorios.
require_on_publish
Install
composer require 'drupal/require_on_publish:^2.0'
composer require 'drupal/require_on_publish:8.x-1.11'
Overview
El módulo Require on Publish proporciona un mecanismo para requerir que un campo se complete solo cuando se publica una entidad. Esto es particularmente útil para flujos de trabajo editoriales donde los autores de contenido necesitan guardar borradores sin completar todos los campos, pero deben completar campos específicos antes de que el contenido pueda ser publicado.
Cuando se habilita para un campo, los errores de validación solo aparecerán al intentar publicar el contenido. Si el contenido se guarda como borrador (no publicado), el campo puede permanecer vacío sin generar errores de validación. El módulo también proporciona una función opcional "Advertencia cuando está vacío" que muestra mensajes de advertencia al guardar borradores con campos vacíos, recordando a los autores que estos campos serán obligatorios al publicar.
El módulo se integra perfectamente con el módulo Content Moderation de Drupal, detectando correctamente los estados de publicación de los flujos de trabajo editoriales. También es compatible con el módulo Paragraphs, permitiendo que los campos dentro de los párrafos se marquen como obligatorios al publicar.
Features
- Marcar cualquier campo como 'Obligatorio al publicar' a través de la interfaz de configuración de campos
- Indicador visual (triángulo azul) que distingue los campos 'obligatorios al publicar' de los campos siempre obligatorios
- Función opcional 'Advertencia cuando está vacío' que muestra advertencias al guardar borradores con campos obligatorios al publicar vacíos
- Integración completa con el módulo Content Moderation y flujos de trabajo editoriales
- Soporte para el módulo Paragraphs - los campos dentro de los párrafos pueden marcarse como obligatorios al publicar
- Exclusión mutua automática entre las configuraciones 'Obligatorio' y 'Obligatorio al publicar' mediante JavaScript
- Funciona con cualquier tipo de entidad que implemente EntityPublishedInterface (nodes, media, etc.)
- Soporte para varios tipos de campos incluyendo texto, referencias a entidades, booleanos, datetime y más
Use Cases
Flujo de trabajo editorial con contenido en borrador
Las organizaciones de noticias a menudo necesitan que los reporteros guarden artículos incompletos como borradores. Usando 'Obligatorio al Publicar', campos como 'Imagen destacada', 'Resumen' o 'Categoría' pueden dejarse vacíos durante la redacción pero deben completarse antes de que el artículo pueda publicarse. Esto permite una creación de contenido flexible mientras se asegura que el contenido publicado cumpla con los estándares de calidad.
Integración con Content Moderation
Al usar Content Moderation con estados como 'Borrador', 'En revisión' y 'Publicado', el módulo detecta correctamente cuando el contenido transiciona a un estado publicado. Los campos marcados como 'obligatorio al publicar' solo generarán errores de validación al mover el contenido al estado publicado, no durante las etapas de borrador o revisión.
Sistema de advertencias para borradores incompletos
Habilite tanto 'Obligatorio al Publicar' como 'Advertencia cuando está vacío' para campos importantes. Al guardar un borrador con campos vacíos, los autores ven mensajes de advertencia recordándoles qué campos necesitan completarse antes de publicar. Esto ayuda a los editores a rastrear contenido incompleto sin bloquear la operación de guardado.
Paragraphs con campos obligatorios
Para estructuras de contenido complejas usando Paragraphs, los campos individuales dentro de los tipos de párrafo pueden marcarse como obligatorios al publicar. Por ejemplo, un párrafo 'Característica del producto' podría tener un campo 'Descripción de la característica' que sea obligatorio solo cuando la página del producto padre se publique.
Tips
- Use 'Advertencia cuando está vacío' en combinación con 'Obligatorio al Publicar' para ayudar a los editores a rastrear contenido incompleto sin bloquear los guardados
- El indicador visual (triángulo azul) ayuda a distinguir los campos 'obligatorios al publicar' de los campos siempre obligatorios (asterisco rojo)
- Cuando tanto 'Obligatorio' como 'Obligatorio al Publicar' están marcados, el JavaScript automáticamente desmarca la otra opción - son mutuamente excluyentes
- El módulo funciona con cualquier tipo de entidad que implemente EntityPublishedInterface, no solo nodes
Technical Details
Admin Pages 1
/admin/structure/types/manage/{node_type}/fields/{field_config}
Al editar cualquier configuración de campo para tipos de entidad publicables (nodes, media, etc.), aparecen dos nuevas casillas de verificación que permiten a los administradores configurar el comportamiento de obligatorio al publicar para ese campo específico.
Hooks 9
hook_form_field_config_edit_form_alter
Añade las casillas de verificación 'Obligatorio al Publicar' y 'Advertencia cuando está vacío' a los formularios de edición de configuración de campos para tipos de entidad publicables.
hook_entity_type_alter
Añade la restricción de validación 'require_on_publish' a todos los tipos de entidad que implementan EntityPublishedInterface.
hook_form_alter
Añade indicadores visuales (clases CSS) a los widgets de formulario para campos que tienen habilitado 'obligatorio al publicar'.
hook_preprocess_form_element
Añade la clase CSS 'form-required-on-publish' a las etiquetas de los elementos del formulario.
hook_preprocess_fieldset
Añade la clase CSS 'form-required-on-publish' a los spans de leyenda de los fieldsets.
hook_preprocess_datetime_wrapper
Añade la clase CSS 'form-required-on-publish' a los elementos contenedores de datetime.
hook_preprocess_field_multiple_value_form
Añade la clase CSS 'form-required-on-publish' a los encabezados de tabla de campos con múltiples valores.
hook_field_widget_entity_reference_paragraphs_form_alter
Añade indicadores de obligatorio al publicar a los elementos del widget de párrafos.
hook_field_widget_single_element_paragraphs_form_alter
Añade indicadores de obligatorio al publicar a los widgets de párrafos de elemento único.
Troubleshooting 4
Esta casilla solo aparece para tipos de entidad que implementan EntityPublishedInterface. Verifique que su tipo de entidad (nodes, media, etc.) soporte publicación. Los tipos de entidad personalizados deben implementar esta interfaz.
Asegúrese de que el contenido realmente se esté guardando como no publicado. Verifique que la casilla 'Publicado' esté desmarcada, o cuando use Content Moderation, verifique que el estado de moderación sea un estado no publicado como 'draft'.
La exclusión mutua se maneja mediante JavaScript. Asegúrese de que JavaScript esté habilitado y no haya errores de JS en la consola del navegador. La biblioteca require_on_publish/config-form debe estar cargada.
Actualice a la última versión del módulo. El Issue #3178100 corrigió el soporte de Paragraphs con Content Moderation. El módulo ahora lee correctamente el estado de moderación de la entidad padre al validar los subcampos de párrafos.