Gestor documental con Drupal 7/7: búsqueda, vistas, menús y bloques

El último paso es que los documentos se encuentren. Este capítulo monta tres vías complementarias: un listado filtrable del repositorio con Views, un buscador que lee el texto de dentro de los ficheros con Search API y facetas, y una navegación con menús y bloques pensada para cada rol.

1. El repositorio: una vista con filtros

Views viene en el núcleo y es la herramienta para cualquier listado. En /admin/structure/views/add:

  1. Mostrar Contenido del tipo Documento, ordenado por fecha de creación, descendente.
  2. Crear una página con la ruta /documentos, formato Tabla de Campos y 50 elementos por página con paginador.
  3. Campos: título (enlazado a la ficha), tipo documental, área, fecha del documento, versión y fichero.
  4. En la configuración de la tabla, marca las columnas como ordenables y la fecha del documento como orden por defecto.

Después, en Criterios de filtrado, añade filtros expuestos para que el lector pueda afinar:

  • Tipo documental: filtro de término como lista desplegable.
  • Área: usa el filtro Tiene ID de término de taxonomía (con profundidad), para que al elegir «Administración» salgan también los documentos de «Contabilidad». Ponle como identificador area: lo usarán los menús.
  • Fecha del documento: con el operador Está entre.
  • Texto: Filtro de campos combinados sobre título, código y resumen.

No desactives la reescritura SQL. En Avanzado › Configuración de la consulta hay una opción Desactivar reescritura de SQL. Si se marca, la vista deja de aplicar el control de acceso por documento (el de Group u otro módulo similar) y listaría títulos que el usuario no debería ver.

2. Bloques útiles para cada rol

Desde la misma vista se pueden añadir displays de tipo bloque, cada uno con sus filtros:

BloqueFiltro clavePara quién
Últimos documentosPublicado; 5 elementos por fecha de actualizaciónTodos, en la portada
Mis documentosAutor = usuario actual (filtro contextual o relación con el autor)Autores
Pendientes de revisiónEstado de moderación = En revisiónRevisores
Revisión vencidaFecha de revisión anterior a now; publicadoRevisores

Los bloques se colocan en /admin/structure/block. En la configuración de cada uno, la pestaña Roles limita quién lo ve y la pestaña Páginas, en qué rutas aparece.

3. Búsqueda dentro de los ficheros

El buscador del núcleo solo indexa el texto de las fichas, no el de los PDF adjuntos. Para buscar dentro de los ficheros se usan tres módulos contribuidos:

  • Search API: el marco de indexación. Incluye un servidor sobre la propia base de datos (search_api_db) que no necesita instalar nada más.
  • Search API Attachments: extrae el texto de los ficheros para indexarlo.
  • Facets: los filtros laterales con recuento («Contrato (34)», «Informe (12)»).
ddev composer require drupal/search_api drupal/search_api_attachments drupal/facets
ddev drush pm:install search_api search_api_db search_api_attachments facets -y
ddev drush pm:uninstall search -y

La última línea desinstala el buscador del núcleo para que no haya dos buscadores distintos en el sitio.

El extractor de texto

Search API Attachments no lee los ficheros por sí mismo: delega en un extractor, que se elige en /admin/config/search/search_api_attachments. Las dos opciones habituales:

  • pdftotext (del paquete poppler-utils): sencillo, pero solo lee PDF.
  • Apache Tika en modo servidor: lee PDF, Word, Excel, PowerPoint, OpenDocument y muchos más formatos. Necesita Java o, más cómodo, ejecutarse en un contenedor Docker con la imagen oficial apache/tika.

Si el repositorio es sobre todo de PDF, pdftotext basta. Si hay muchos documentos de Office, compensa Tika.

El índice

  1. En /admin/config/search/search-api, Añadir servidor con el backend Base de datos.
  2. Añadir índice sobre ese servidor, con la fuente de datos Contenido limitada al tipo Documento.
  3. En Procesadores, activa como mínimo Content access, Entity status, File attachments, HTML filter e Ignore case. Content access es imprescindible: sin él, el buscador mostraría resultados de documentos que el usuario no puede abrir.
  4. En Campos, añade título, resumen, código, los nombres de los términos de tipo, área y proyecto, y el campo de texto extraído del fichero que crea el procesador File attachments. Marca como texto completo los que se buscan por palabras y como cadena los que se usarán como faceta.
  5. Indexa con ddev drush search-api:index. A partir de ahí, cada documento nuevo o modificado se indexa en el siguiente cron.

La página de búsqueda y las facetas

Con Search API, la página de resultados es otra vista: en /admin/structure/views/add, elige mostrar Índice Documentos, crea una página en /buscar y añade el filtro expuesto Búsqueda de texto completo. Después, en /admin/config/search/facets, crea una faceta por cada criterio (tipo documental, área, año del documento) usando esa página como fuente, y coloca los bloques de facetas en la barra lateral, visibles solo en /buscar.

Para unos miles de documentos el backend de base de datos suele ser suficiente. Si el repositorio crece mucho o necesitas mejor relevancia en español (plurales, variantes de una misma palabra), el siguiente paso es Apache Solr con el módulo Search API Solr, sin cambiar las vistas ni las facetas.

4. Menús y portada

  • Portada: en /admin/config/system/site-information, pon /documentos como página principal, o crea una página de inicio con el buscador y los bloques de últimos documentos.
  • Menú principal (/admin/structure/menu/manage/main): un enlace a Documentos, otro a Buscar y, si las áreas son pocas, uno por área que apunte al listado ya filtrado, por ejemplo /documentos?area=12, donde 12 es el identificador del término.
  • Enlaces para autores y revisores: «Nuevo documento» (/node/add/documento) y «Pendientes de revisión» (/admin/content/moderated). Los usuarios sin permiso no ven los enlaces de menú a rutas a las que no tienen acceso.

Lista de comprobación final

  • Un usuario anónimo no ve nada y no puede descargar ningún fichero, ni siquiera con la URL directa.
  • Un lector ve solo documentos publicados, en los listados y en la búsqueda.
  • Un autor no puede publicar sin revisión, salvo que así se haya decidido.
  • La búsqueda encuentra una frase que solo está dentro de un PDF.
  • Las copias de seguridad incluyen la base de datos y la carpeta de ficheros privados, y se ha probado a restaurarlas.
  • El cron se ejecuta solo y hay alguien encargado de aplicar las actualizaciones de seguridad.

Con esto el gestor documental está completo. El índice del libro, con el planteamiento general y cuándo conviene elegir otra herramienta, está en Cómo crear con Drupal un gestor documental web.

Contenido elaborado con asistencia de inteligencia artificial — Equipo Editorial Dataprix. Verifica la información antes de tomar decisiones.