Search and Replace Scanner
Realiza operaciones de búsqueda y reemplazo en campos de texto configurables a través de entidades Drupal utilizando texto plano o expresiones regulares.
scanner
Install
composer require 'drupal/scanner:8.x-1.0'
Overview
El módulo Search and Replace Scanner proporciona una potente funcionalidad de búsqueda y reemplazo masivo para sitios Drupal. Puede realizar coincidencias con expresiones regulares o texto plano contra una lista configurable de campos de texto en múltiples tipos de entidad, lo que lo hace invaluable para tareas como actualizar nombres de empresas, corregir URLs o rectificar errores de contenido repetidos en grandes cantidades de contenido.
A diferencia de la búsqueda integrada de Drupal, Scanner puede encontrar cadenas HTML y otro contenido que normalmente sería ignorado. El módulo crea nuevas revisiones al realizar reemplazos, permitiendo revertir los cambios si es necesario. También proporciona un sistema completo de deshacer que rastrea todas las operaciones de reemplazo y permite revertir todas las entidades afectadas por una acción de reemplazo específica.
De forma predeterminada, Scanner soporta nodes y paragraphs, pero su arquitectura de plugins extensible permite a los desarrolladores agregar soporte para tipos de entidad adicionales como términos de taxonomía o entidades personalizadas. El módulo incluye un manejo sofisticado para contenido multilingüe, estructuras de paragraphs anidados y varios tipos de campo, incluyendo texto formateado, texto plano, strings y campos de enlace.
Features
- Búsqueda y reemplazo de texto plano en campos de entidad configurables
- Búsqueda y reemplazo con expresiones regulares con soporte completo de sintaxis regex
- Opción de búsqueda sensible a mayúsculas y minúsculas para coincidencias precisas
- Opción de coincidencia de palabra completa para evitar coincidencias parciales (ej. 'run' no coincidirá con 'running')
- Filtros de texto precedido y seguido para limitar coincidencias basándose en el contexto circundante
- Soporte para nodes y paragraphs de forma predeterminada con sistema de plugins extensible para otras entidades
- Restringir búsquedas solo a nodes publicados
- Soporte de contenido multilingüe con búsquedas específicas por idioma o en todos los idiomas
- Creación automática de revisiones cuando se realizan reemplazos para fácil reversión
- Funcionalidad completa de deshacer para revertir todas las entidades de una operación de reemplazo específica
- Visualización de resultados de búsqueda con coincidencias resaltadas y fragmentos de contexto
- Procesamiento por lotes para operaciones a gran escala con expansión automática del tiempo de ejecución
- Opciones de búsqueda predeterminadas configurables para un flujo de trabajo optimizado
- Manejo de compatibilidad de límites de palabra para MySQL/MariaDB en diferentes versiones de base de datos
- Plantilla de resultados de búsqueda personalizable con temas
- Soporta tipos de campo string, text, text_long, text_with_summary y link
Use Cases
Cambio de nombre de empresa
Cuando una empresa cambia su nombre, Scanner puede encontrar y reemplazar todas las instancias del nombre antiguo en todo el contenido. Use coincidencia de palabra completa para evitar reemplazos parciales, y la función de deshacer proporciona seguridad si se cometen errores.
Migración de URLs
Al mover contenido entre dominios o cambiar estructuras de URL, Scanner puede actualizar todos los enlaces internos. Usando expresiones regulares, patrones de URL complejos pueden ser coincididos y transformados sistemáticamente.
Estandarización de contenido
Estandarice la terminología en un sitio reemplazando términos informales con términos oficiales. Por ejemplo, reemplazar 'website' con 'web site' o actualizar nombres de productos a la marca actual.
Limpieza de HTML
Encuentre y elimine o reemplace etiquetas HTML no deseadas, corrija marcado roto o actualice HTML obsoleto a estándares modernos. El modo de expresión regular permite coincidencia de patrones complejos para estructuras HTML.
Actualizaciones de contenido multilingüe
Cuando el contenido necesita ser actualizado en múltiples versiones de idioma, Scanner puede procesar todas las traducciones simultáneamente o dirigirse a idiomas específicos, asegurando consistencia en el contenido localizado.
Corrección de errores tipográficos repetidos
Corrija un error tipográfico que se ha cometido repetidamente en muchas piezas de contenido. Use búsqueda sensible a mayúsculas para coincidir con el error exacto, y coincidencia de palabra completa para evitar cambios no intencionados.
Actualizaciones de información de contacto
Actualice números de teléfono, direcciones de correo electrónico o direcciones físicas que aparecen en múltiples ubicaciones a lo largo del contenido del sitio.
Tips
- Siempre haga una copia de seguridad de su base de datos antes de realizar reemplazos a gran escala. Scanner es potente y puede modificar contenido en todo el sitio.
- Use la función de búsqueda primero para previsualizar qué será cambiado antes de ejecutar un reemplazo.
- Para patrones complejos, pruebe sus expresiones regulares en un solo campo/tipo de contenido antes de habilitar todos los campos.
- Las opciones 'Preceded by' y 'Followed by' son útiles para limitar coincidencias sin expresiones regulares complejas.
- Al reemplazar HTML, tenga cuidado con el modo de expresión regular ya que HTML no es un lenguaje regular. Considere las opciones de texto precedido/seguido en su lugar.
- Se crean nuevas revisiones automáticamente, por lo que siempre puede revertir entidades individuales a través de la interfaz de revisiones de Drupal incluso si no usa la función de deshacer.
- Para sitios multilingües, considere si desea reemplazar en todos los idiomas o solo en uno. El filtro de idioma puede prevenir cambios no intencionados en las traducciones.
- Los usuarios con permiso 'perform search and replace' pueden modificar entidades que normalmente no pueden editar. Asigne este permiso con cuidado.
- La función de deshacer rastrea todos los reemplazos. Revise periódicamente la lista de deshacer para limpiar operaciones antiguas si es necesario.
Technical Details
Admin Pages 5
/admin/content/scanner
La interfaz principal de búsqueda y reemplazo donde los usuarios pueden introducir términos de búsqueda, especificar texto de reemplazo, configurar opciones de búsqueda y ver resultados. Los usuarios pueden realizar búsquedas para previsualizar coincidencias antes de ejecutar reemplazos.
/admin/config/content/scanner
Página de configuración para establecer opciones de búsqueda predeterminadas, seleccionar qué tipos de entidad y campos pueden ser buscados, y configurar ajustes de compatibilidad de base de datos.
/admin/content/scanner/confirm
Página de confirmación mostrada antes de ejecutar una operación de reemplazo. Muestra el término de búsqueda y el texto de reemplazo y solicita confirmación antes de proceder.
/admin/content/scanner/undo
Lista todas las operaciones de reemplazo anteriores que no han sido deshechas. Muestra la fecha, término de búsqueda, texto de reemplazo, número de entidades afectadas y proporciona un enlace de deshacer para cada operación.
/admin/content/scanner/undo/{id}/confirm
Página de confirmación mostrada antes de deshacer una operación de reemplazo anterior. Revertir restaura todas las entidades afectadas a sus revisiones anteriores.
Permissions 3
Hooks 1
hook_scanner_info_alter
Permite a los módulos alterar las definiciones de plugins de scanner. Puede usarse para reemplazar el manejador de scanner predeterminado para un tipo de entidad con una implementación personalizada.
Troubleshooting 6
Verifique el ajuste 'Regex word boundaries' en la configuración de administración. Si su base de datos es MySQL 8.0.4+, asegúrese de que esté configurado en 'Modo ICU' o 'Detectar automáticamente'. Versiones anteriores de MySQL y MariaDB requieren 'Modo Henry Spencer'.
El módulo intenta extender el max_execution_time de PHP a 5 minutos. Si los reemplazos aún expiran, contacte a su proveedor de hosting sobre aumentar el límite de max_execution_time, o divida el reemplazo en lotes más pequeños seleccionando menos campos.
Scanner usa almacenamiento temporal vinculado a la sesión del usuario. Solo una instancia puede ejecutarse a la vez por usuario. Complete o cancele la operación actual antes de iniciar otra.
Deshacer restaura las entidades a su revisión anterior. Si se realizaron otros cambios a la entidad entre el reemplazo y el deshacer, esos cambios pueden perderse. Siempre haga una copia de seguridad de su base de datos antes de operaciones de reemplazo importantes.
Vaya a Administración > Informes > Informe de estado para ver el tipo y versión de base de datos detectados. Luego actualice el ajuste de límites de palabra en Administración > Configuración > Creación de contenido > Search and Replace Scanner para coincidir con su base de datos.
La funcionalidad de reemplazo requiere el permiso 'Perform search and replace'. Los usuarios con solo el permiso 'Perform search only' pueden buscar pero no reemplazar. Verifique los permisos de usuario en Administración > Personas > Permisos.
Security Notes 5
- Los usuarios con permiso 'Perform search and replace' pueden modificar entidades incluso sin acceso normal de edición a esas entidades. Otorgue este permiso solo a usuarios de confianza.
- El permiso 'Administer scanner settings' controla qué campos pueden ser buscados. Esto restringe qué contenido puede ser modificado incluso por usuarios con permiso de reemplazo.
- Los reemplazos con expresiones regulares ejecutan la función preg_replace de PHP. Aunque los términos de búsqueda son proporcionados por el usuario, el reemplazo está limitado a sustitución de texto.
- Scanner crea historial de revisiones para todos los cambios, proporcionando un rastro de auditoría de modificaciones.
- Las credenciales de base de datos se usan para detectar la versión de MySQL/MariaDB para compatibilidad de límites de palabra pero no se exponen en la interfaz.