View Unpublished
Permite que roles de usuario específicos vean nodos no publicados, con control de acceso granular por tipo de contenido.
view_unpublished
Install
composer require 'drupal/view_unpublished:8.x-1.3'
composer require 'drupal/view_unpublished:8.x-1.0'
Overview
El módulo View Unpublished extiende el sistema de acceso a contenido de Drupal para proporcionar un control detallado sobre qué roles de usuario pueden ver contenido no publicado. Por defecto, Drupal solo permite que los usuarios con el permiso "ver su propio contenido no publicado" vean sus propios nodos no publicados, y los administradores pueden ver todo el contenido.
Este módulo añade nuevos permisos que permiten a roles específicos ver cualquier contenido no publicado de forma global o por tipo de contenido. Por ejemplo, puedes permitir que los editores previsualicen artículos no publicados mientras restringes su acceso a páginas básicas no publicadas.
El módulo se integra perfectamente con el sistema de acceso a nodos de Drupal utilizando el mecanismo de grant/realm, asegurando un control de acceso adecuado sin requerir cambios en las estructuras de URL. También funciona correctamente con Views, contenido multilingüe y el módulo Content Moderation.
Features
- Proporciona un permiso global "Ver cualquier contenido no publicado" para ver todos los nodos no publicados independientemente del tipo de contenido
- Genera automáticamente permisos por tipo de contenido (ej., "Artículo: Ver cualquier contenido no publicado") para cada tipo de contenido
- Funciona junto con el permiso del núcleo "ver su propio contenido no publicado" sin conflictos
- Se integra con Views usando un filtro personalizado "Estado de publicación o usuario administrador" que respeta los permisos del módulo
- Soporta sitios multilingües manejando correctamente los grants de nodo específicos por idioma para contenido traducido
- Marca automáticamente los permisos de acceso a nodos para reconstrucción al instalar o desinstalar el módulo
- Compatible con los permisos de acceso a contenido no publicado del módulo Content Moderation
- Se integra con la pantalla de Resumen de contenido del núcleo (Administración > Contenido) para mostrar contenido no publicado según los permisos
Use Cases
Flujo de trabajo editorial para sitios de noticias
Un sitio web de noticias necesita que los editores previsualicen artículos no publicados antes de su publicación, pero no deberían ver páginas de destino no publicadas gestionadas por administradores. Asigna 'Artículo: Ver cualquier contenido no publicado' al rol de Editor mientras retienes los permisos relacionados con páginas.
Equipos de revisión de contenido
Diferentes equipos revisan diferentes tipos de contenido. El equipo de producto revisa páginas de productos mientras el equipo de marketing revisa publicaciones del blog. Otorga a cada equipo solo el permiso para su tipo de contenido (ej., 'Producto: Ver cualquier contenido no publicado' para el equipo de producto).
Acceso de previsualización para clientes
Los clientes necesitan revisar contenido antes de que se publique, pero no deberían tener acceso administrativo completo. Crea un rol 'Revisor Cliente' con el permiso 'Ver cualquier contenido no publicado' para permitir la previsualización de todo el contenido en borrador sin capacidades de edición.
Integración con Override Node Options
Combinado con el módulo Override Node Options, puedes permitir que roles específicos tanto vean como publiquen/despubliquen ciertos tipos de contenido sin otorgar acceso completo a la administración de nodos.
Previsualización de contenido multilingüe
Para sitios multilingües, los editores que traducen contenido necesitan previsualizar traducciones no publicadas. El módulo maneja correctamente los grants específicos por idioma, permitiendo a los usuarios ver traducciones no publicadas en idiomas específicos mientras las versiones publicadas permanecen accesibles para todos.
Tips
- Siempre usa el filtro 'Estado de publicación o usuario administrador' en Views para aprovechar los permisos de view_unpublished
- El módulo funciona sin modificar URLs - el contenido no publicado permanece en su ruta normal
- Combina con el módulo Override Node Options para una solución completa de flujo de trabajo editorial
- Los permisos de acceso a nodos están en caché - limpia las cachés si los cambios de permisos no tienen efecto inmediatamente
- El módulo respeta el permiso 'ver su propio contenido no publicado' del núcleo, por lo que los usuarios siempre pueden ver su propio contenido no publicado si ese permiso está otorgado
- Para sitios que usan Content Moderation, el módulo se integra con los permisos de acceso a contenido no publicado propios del módulo
Technical Details
Permissions 2
Hooks 4
hook_node_access_records
Define grants de acceso a nodos para contenido no publicado. Crea grants en múltiples realms: 'view_unpublished_content' para acceso global, 'view_unpublished_{type}_content' para acceso por tipo de contenido, y 'view_unpublished_author' para acceso al contenido propio.
hook_node_grants
Asigna grants de acceso a nodos a usuarios basándose en sus permisos. Verifica los permisos 'view any unpublished content' (global), 'view any unpublished {type} content' (por tipo), y 'view own unpublished content' del núcleo.
hook_views_plugins_filter_alter
Reemplaza la clase del plugin de filtro node_status de Views del núcleo con la clase NodeStatus personalizada del módulo para manejar correctamente los permisos de view_unpublished en Views.
hook_views_query_substitutions
Proporciona marcadores de sustitución de consultas para Views que indican si el usuario actual tiene permiso para ver contenido no publicado de cada tipo.
Troubleshooting 5
Asegúrate de estar usando el filtro 'Estado de publicación o usuario administrador' en Views, NO el filtro 'Publicado (= Sí)'. El filtro personalizado respeta los permisos de view_unpublished mientras que el filtro estándar no lo hace.
Reconstruye los permisos de acceso a nodos en Administración > Informes > Estado > Reconstruir. Esto es necesario para que los grants del módulo se apliquen al contenido existente.
Verifica si el usuario tiene el permiso global 'Ver cualquier contenido no publicado', que anula los permisos por tipo. Elimina este permiso para usar acceso granular por tipo.
La reconstrucción de acceso a nodos puede tomar un tiempo significativo con grandes volúmenes de contenido. Programa la reconstrucción durante horas de baja actividad y asegura límites adecuados de memoria PHP y tiempo de ejecución.
Esto era un bug en versiones anteriores. Actualiza a la última versión del módulo, que elimina automáticamente las dependencias erróneas durante las actualizaciones (update hook 8002).
Security Notes 5
- Este módulo intencionalmente expande el acceso a contenido no publicado - considera cuidadosamente qué roles deberían tener estos permisos
- El contenido no publicado puede contener información sensible o inacabada no destinada a visualización pública
- Los permisos por tipo de contenido son más seguros que el permiso global para limitar la exposición
- Revisa los permisos regularmente, especialmente después de crear nuevos tipos de contenido, ya que los nuevos permisos por tipo se generan automáticamente
- El módulo no otorga acceso de edición o eliminación - solo acceso de visualización a contenido no publicado