Views (para Drupal 7)

Un potente constructor de consultas y sistema de visualización para crear listas y presentaciones personalizadas de contenido desde tu base de datos de Drupal.

views
189,586 sites
128
drupal.org

Overview

El módulo Views proporciona un método flexible para controlar cómo se presentan las listas y tablas de contenido, usuarios, términos de taxonomía y otros datos en tu sitio Drupal. Cada 'view' individual es una consulta personalizada que diseñas para obtener contenido de tu base de datos y mostrarlo en cualquier formato.

Views proporciona una interfaz gráfica para construir consultas SQL sin escribir código. Puedes crear displays de página con URLs, bloques para colocar en regiones, feeds para salida RSS y más. El módulo soporta relaciones entre tipos de datos, filtros expuestos para interacción del usuario, filtros contextuales (argumentos) y amplias capacidades de tematización.

El sistema Views es altamente extensible a través de handlers (para campos, filtros, ordenamientos, argumentos y relaciones) y plugins (para displays, estilos, filas, control de acceso, caché, paginadores y consultas). Esto lo convierte en la base de muchos módulos y patrones de construcción de sitios en Drupal 7.

Features

  • Interfaz gráfica de constructor de consultas para crear consultas de base de datos sin conocimientos de SQL
  • Múltiples tipos de display: Page (con URL y enlaces de menú), Block, Feed (RSS/Atom), Attachment y Embed
  • Handlers de campos flexibles para mostrar datos de node, usuario, taxonomía, comentarios y personalizados con opciones de formato
  • Handlers de filtros con filtros expuestos que permiten a los visitantes del sitio filtrar resultados dinámicamente
  • Handlers de ordenamiento con ordenación expuesta para control del orden de resultados por el usuario
  • Filtros contextuales (argumentos) para contenido dinámico basado en parámetros de URL u otro contexto
  • Handlers de relaciones para unir datos relacionados (ej., autor del node, términos de taxonomía)
  • Handlers de área para contenido de encabezado, pie de página y texto vacío con tokens y texto personalizado
  • Múltiples plugins de estilo: Lista sin formato, lista HTML, Cuadrícula, Tabla (con columnas ordenables), RSS
  • Plugins de fila para renderizar elementos individuales como campos, nodes completos, teasers o formatos personalizados
  • Soporte AJAX para paginación y actualización de filtros expuestos sin recargar la página
  • Caché basada en tiempo tanto para resultados de consultas como para salida renderizada
  • Control de acceso mediante permisos o roles a nivel de view/display
  • Vista previa en vivo en la interfaz administrativa con visualización de consulta SQL y estadísticas de rendimiento
  • Exportación/importación de configuraciones de views para despliegue y compartición
  • Extenso sistema de sobreescritura de plantillas con sugerencias específicas de view y display
  • Integración con 18 módulos del núcleo de Drupal (node, user, taxonomy, comment, field, etc.)
  • Plugins de paginador: Paginador completo, Mini paginador, cantidad fija de elementos o sin paginador
  • Soporte de agrupación para organizar resultados por valores de campo
  • Integración de enlaces contextuales para acceso rápido a la edición de views

Use Cases

Páginas de listado de contenido

Crea páginas que muestran listas de contenido filtradas por tipo, términos de taxonomía, autor o fecha. Ejemplos: listados de blog, archivos de noticias, índices de artículos, catálogos de productos. Configura con Page display, filtros expuestos para refinamiento del usuario y paginación para conjuntos de resultados grandes.

Bloques en barra lateral con contenido reciente/popular

Construye bloques que muestran publicaciones recientes, artículos populares, próximos eventos o contenido destacado. Usa Block display con cantidad limitada de elementos y sin paginador. Ordena por fecha, conteo de vistas o marcador sticky. Coloca en regiones de barra lateral para navegación complementaria.

Gestión administrativa de contenido

Crea interfaces administrativas para gestionar contenido con operaciones masivas. Formato de tabla con columnas ordenables, filtros expuestos para tipo de contenido y estado, y enlaces de editar/eliminar. Integra con el módulo Views Bulk Operations (VBO) para acciones masivas.

Directorios de usuarios y listas de miembros

Muestra listados de usuarios para sitios comunitarios con fotos de usuario, biografías e información de perfil. Filtra por rol, fecha de registro o campos de perfil personalizados. Crea tanto directorios públicos de miembros como vistas de gestión administrativa de usuarios.

Páginas de términos de taxonomía

Reemplaza las páginas predeterminadas de términos de taxonomía con vistas personalizadas que muestran contenido etiquetado con términos específicos. Añade filtros expuestos para tipo de contenido, rangos de fechas o autores. Muestra términos relacionados o jerarquías de términos.

Bloques de contenido relacionado

Usa filtros contextuales para crear bloques que muestran contenido relacionado con el nodo actualmente visualizado. Relaciona por términos de taxonomía, autor o relaciones personalizadas. Coloca en páginas de nodo para fomentar mayor interacción.

Feeds RSS y sindicación de contenido

Genera feeds RSS/Atom para categorías de contenido, actividad de usuarios o actualizaciones de todo el sitio. Usa Feed display con estilo RSS. Configura campos específicos del feed como título del elemento, enlace y descripción.

Galerías de imágenes y portafolios

Crea galerías de imágenes usando estilo Grid con campos de imagen. Añade integración de lightbox a través de módulos complementarios. Soporte para múltiples galerías, categorización y vistas de presentación de diapositivas.

Calendarios de eventos y programaciones

Muestra próximos eventos en formato de lista, tabla o calendario. Filtra por rangos de fechas, categorías de eventos o ubicaciones. Integra con el módulo Date para manejo de campos de fecha y visualizaciones de calendario.

Páginas de resultados de búsqueda

Crea visualizaciones personalizadas de resultados de búsqueda con más control que la búsqueda predeterminada de Drupal. Resalta términos de búsqueda, muestra metadatos relevantes y permite refinamiento a través de filtros expuestos.

Listados de productos de comercio electrónico

Construye páginas de catálogo de productos con filtrado por categoría, rango de precios o atributos. Visualización en tabla o cuadrícula con imágenes de productos, precios y enlaces de añadir al carrito. Se integra con los módulos Commerce y Ubercart.

Informes y paneles de datos

Crea informes administrativos que muestran estadísticas de contenido, actividad de usuarios o datos personalizados. Usa agregación para conteos y totales. Formato de tabla con ordenación y exportación CSV a través de módulos complementarios.

Tips

  • Usa el Master display para configuraciones compartidas entre todas las visualizaciones, luego anula configuraciones específicas por visualización para evitar repetición.
  • Habilita 'Always show advanced display settings' en la configuración de Views para un acceso más fácil a relaciones y filtros contextuales.
  • Usa la opción 'Preview with contextual filters' para probar vistas con diferentes valores de argumento.
  • Clona vistas existentes como punto de partida en lugar de crear desde cero para casos de uso similares.
  • Usa la reescritura de campos para crear enlaces personalizados, combinar campos o aplicar tokens a la salida de campos.
  • Habilita la visualización de consultas SQL durante el desarrollo para entender y depurar las consultas generadas.
  • Usa filtros agrupados para crear combinaciones de filtros AND/OR para lógica de filtrado compleja.
  • Establece comentarios administrativos significativos en vistas y visualizaciones para documentación del equipo.
  • Usa la opción 'Exclude from display' en campos que proporcionan datos para reescritura u ordenación pero no deben mostrarse.
  • Prueba las vistas con diferentes roles de usuario para asegurar que la configuración de acceso funcione correctamente en todos los niveles de permisos.
  • Usa atajos de teclado de Views UI: Ctrl+Enter para guardar formularios, Escape para cerrar diálogos modales.
  • Exporta vistas regularmente como respaldo y para despliegue entre entornos.
  • Usa nombres de clases semánticas en la configuración CSS para facilitar la tematización y el direccionamiento de JavaScript.
  • Considera usar Attachment displays para combinar múltiples vistas con filtros expuestos compartidos.

Technical Details

Admin Pages 8
Views /admin/structure/views

La página principal de administración de Views que muestra todas las vistas disponibles organizadas en grupos de Habilitadas y Deshabilitadas. Desde esta página puede agregar nuevas vistas, habilitar/deshabilitar vistas existentes, editar configuraciones de vistas, clonar vistas, exportar vistas y eliminar vistas. Las vistas se pueden filtrar y ordenar cuando la opción de filtros de listado está habilitada.

Agregar nueva vista /admin/structure/views/add

Una interfaz estilo asistente para crear rápidamente nuevas vistas. Usted especifica la configuración básica y el asistente genera una configuración inicial que luego puede personalizar en el editor completo.

Editar vista /admin/structure/views/view/%view_name/edit

La interfaz completa de edición de vistas con todas las opciones de configuración. La interfaz está dividida en secciones para configuración de visualización, formato/campos, criterios de filtro, criterios de ordenación, filtros contextuales, relaciones y opciones avanzadas. Cada visualización (Master, Page, Block, etc.) se puede configurar independientemente o heredar de la visualización Master.

Configuración de Views /admin/structure/views/settings

Configuración global que afecta a todas las vistas y el comportamiento de la interfaz de Views.

Configuración de Views - Avanzado /admin/structure/views/settings/advanced

Configuración avanzada para depuración, caché y localización.

Importar vista /admin/structure/views/import

Importar una vista desde código PHP exportado. Pegue el código de vista exportado y proporcione un nombre para importar la configuración de la vista.

Campos usados en vistas /admin/reports/fields/views-fields

Muestra un informe de todos los campos y su uso en todas las vistas del sistema. Útil para auditar el uso de campos antes de eliminarlos.

Plugins de Views /admin/reports/views-plugins

Muestra un informe de todos los plugins de Views (visualización, estilo, fila, etc.) y qué vistas los están usando. Útil para entender el uso de plugins en todo el sitio.

Permissions 2
Administrar views

Acceder a las páginas de administración de views para crear, editar, habilitar, deshabilitar y eliminar views. Este es un permiso poderoso que solo debe otorgarse a administradores de confianza.

Omitir control de acceso de views

Omitir todas las restricciones de acceso al visualizar views. Los usuarios con este permiso pueden ver cualquier view independientemente de su configuración de acceso. Usar con precaución.

Hooks 23
hook_views_api

Registra tu módulo como implementación de la API de Views. Requerido para que Views cargue el archivo .views.inc de tu módulo y reconozca tus handlers/plugins.

hook_views_data

Describe tablas y campos de base de datos a Views, permitiendo que sean usados en vistas. Define handlers para campos, filtros, ordenamientos, argumentos y relaciones.

hook_views_data_alter

Altera los datos de Views definidos por otros módulos. Añade campos a tablas existentes, modifica handlers o cambia relaciones.

hook_views_plugins

Registra plugins personalizados (display, style, row, argument default, argument validator, access, cache, pager, exposed form, localization, query, display extender).

hook_views_plugins_alter

Altera definiciones de plugins de otros módulos.

hook_views_default_views

Proporciona vistas predeterminadas que se distribuyen con tu módulo. Las vistas pueden ser habilitadas/deshabilitadas por los administradores del sitio.

hook_views_default_views_alter

Altera las vistas predeterminadas definidas por otros módulos antes de que sean almacenadas en caché.

hook_views_pre_view

Se llama al comienzo del procesamiento de la vista (execute_display o preview). Permite alterar la vista antes de que se haga cualquier cosa.

hook_views_pre_build

Se llama después del pre_execute del display pero antes del proceso de construcción de la consulta. Útil para modificar la vista antes de la construcción de la consulta.

hook_views_post_build

Se llama justo después del proceso de construcción. La consulta está completamente construida pero aún no se ha ejecutado.

hook_views_pre_execute

Se llama justo antes de la ejecución de la consulta. Última oportunidad para modificar la consulta.

hook_views_post_execute

Se llama justo después de la ejecución de la consulta. Los resultados están disponibles pero pre_render no se ha ejecutado.

hook_views_pre_render

Se llama justo antes del renderizado. El pre_render se ha completado para los handlers, todos los datos están disponibles.

hook_views_post_render

Se llama después de que el renderizado está completo. Permite el post-procesamiento de la salida renderizada.

hook_views_query_alter

Altera la consulta antes de la ejecución. Permite la manipulación directa de condiciones de consulta, joins y otros elementos.

hook_views_query_substitutions

Proporciona sustituciones de marcadores de posición para usar en consultas de vistas. Los marcadores como ***CURRENT_USER*** se reemplazan en el momento de la consulta.

hook_views_invalidate_cache

Responde cuando se limpia la caché de Views. Se dispara cuando las vistas son creadas, actualizadas, eliminadas, habilitadas o deshabilitadas.

hook_views_view_presave

Altera una vista justo antes de que sea guardada en la base de datos.

hook_views_view_save

Responde cuando una vista es guardada.

hook_views_view_delete

Responde cuando una vista es eliminada o revertida.

hook_views_ajax_data_alter

Altera los comandos AJAX devueltos por una solicitud AJAX de Views.

hook_field_views_data

Sobrescribe los datos de vistas predeterminados para un tipo de campo de Field API. Se llama para el módulo que define el tipo de campo.

hook_field_views_data_alter

Altera los datos de vistas para un solo campo de Field API después de que se generan los datos predeterminados.

Drush Commands 7
drush views-revert

Revierte las vistas sobrescritas a su estado predeterminado (definido en código). Si no se especifican nombres de vistas, muestra una lista de vistas sobrescritas para elegir.

drush views-list

Lista todas las vistas en el sistema con su estado, tipo y etiquetas. Puede filtrar por varios criterios.

drush views-enable

Habilita las vistas especificadas

drush views-disable

Deshabilita las vistas especificadas

drush views-dev

Configura los ajustes de Views para desarrollo. Habilita la visualización de consultas SQL, estadísticas de rendimiento, deshabilita la actualización automática de vista previa en vivo y habilita la salida de depuración.

drush views-analyze

Analiza todas las vistas e informa sobre problemas potenciales. Verifica problemas comunes de configuración y muestra advertencias.

drush cache-clear views

Limpia las cachés específicas de Views incluyendo la caché de datos de vistas y la caché de bloques.

Troubleshooting 10
La vista muestra 'No se encontraron resultados' cuando se esperan resultados

Verifica los criterios de filtro, especialmente el estado de publicación y los permisos de acceso. Habilita la vista previa de consulta para ver el SQL generado. Verifica que la tabla base tenga datos. Comprueba que los valores de filtros expuestos no estén excluyendo todos los resultados.

La paginación AJAX o los filtros expuestos no funcionan

Asegúrate de que 'Use AJAX' esté habilitado en la configuración de visualización. Verifica que JavaScript no tenga errores en la consola del navegador. Comprueba que la vista tenga un ID DOM único. Limpia las cachés de Views y de página.

La vista muestra resultados duplicados

Habilita 'Distinct' en la configuración de consulta (Advanced > Query settings). Verifica si hay relaciones que puedan crear múltiples filas. Usa agregación si se necesita agrupación.

La opción 'Cualquiera' del filtro expuesto muestra texto incorrecto

Configura 'Label for Any value' en la configuración de Views (/admin/structure/views/settings). Cada filtro expuesto también puede anular esto en su configuración.

El rendimiento de la vista es lento

Habilita el almacenamiento en caché (basado en tiempo) en la configuración avanzada. Añade índices de base de datos para campos filtrados/ordenados. Limita los campos recuperados. Usa 'Render pager' solo cuando sea necesario. Verifica si hay relaciones costosas.

Las plantillas personalizadas no se están aplicando

Limpia la caché del registro de temas (drush cc theme-registry). Verifica que el nombre de la plantilla siga el patrón: views-view--[view-name]--[display-id].tpl.php. Comprueba que la plantilla esté en el directorio del tema activo.

La vista muestra acceso denegado

Verifica la configuración de acceso de visualización (None/Role/Permission). Verifica que el usuario tenga el permiso o rol requerido. Comprueba que el permiso 'access content' esté otorgado si se muestran nodos.

El bloque de vista no aparece

Asegúrate de que el bloque esté colocado en una región en /admin/structure/block. Verifica la configuración de visibilidad del bloque (páginas, roles, tipos de contenido). Verifica que la vista esté habilitada y que exista el Block display.

El filtro contextual no está recibiendo el argumento

Verifica que la estructura de URL coincida con la posición del argumento. Configura 'Default value' para cuando falte el argumento. Usa 'Provide default value > Content ID from URL' para páginas de nodo.

Los cambios no aparecen después de editar la vista

Haz clic en 'Save' en la página de edición de la vista (los cambios no se guardan automáticamente). Limpia la caché de Views con 'drush cc views'. Verifica si hay vistas bloqueadas si múltiples usuarios editan simultáneamente.

Security Notes 9
  • Otorga el permiso 'Administer views' solo a roles altamente confiables, ya que permite crear argumentos y filtros basados en PHP.
  • El permiso 'Bypass views access control' es peligroso y raramente debe asignarse fuera del desarrollo.
  • Evita usar plugins de código PHP (argument default, argument validator) en producción - usa handlers personalizados en su lugar.
  • Views respeta los permisos de acceso a nodos al mostrar contenido, pero verifica con diferentes roles de usuario.
  • Los filtros expuestos pueden revelar valores de campos sensibles en menús desplegables - considera las implicaciones de acceso.
  • La inyección SQL es prevenida por el constructor de consultas, pero las alteraciones de consulta personalizadas deben usar marcadores de posición apropiados.
  • Los bloques de vistas pueden evadir el acceso a nodos si no están configurados correctamente - verifica la configuración de acceso en Block displays.
  • Los Feed displays pueden exponer contenido a usuarios anónimos independientemente de la configuración de acceso a nodos.
  • Las exportaciones de vistas contienen solo configuración, pero revisa antes de importar vistas de fuentes no confiables.