Lo que hace por tu tienda
- Buscador a pantalla completaResultados con imagen, precio, stock y marca mientras el cliente escribe, sin recargar la página y con los colores que elijas.
- MySQL o Meilisearch, tú eligesBusca en su propio índice, que se actualiza al guardar productos, y admite Meilisearch con vuelta automática a MySQL si falla.
- Entiende las erratasLa búsqueda aproximada encuentra el producto aunque el cliente escriba mal, y las coincidencias exactas salen primero.
- Compra sin salir del buscadorAñade al carrito desde el resultado, eligiendo la combinación cuando el producto tiene variantes.
- Relevancia y sinónimos a tu medidaDecide si pesa más el nombre, la referencia, el EAN o la marca, y define sinónimos por idioma con importación CSV.
- Lo que buscan y no encuentranRegistra búsquedas, clics y términos sin resultados, y precarga los más buscados para responder al instante.
Aviso
También a la venta en PrestaShop Addons, el marketplace oficial de PrestaShop. Ver el módulo en Addons
Módulo Visual Search No SaaS: El Buscador Inteligente autoalojado con opción meilisearch
- Un año de soporte técnico y actualizaciones de por vida; desde el segundo año, el soporte se amplía por 100,71 €/año e incluye atender tus ideas de mejora generales del módulo.
- Se renueva sola; la cancelas cuando quieras, sin permanencia.
- Un año de soporte técnico y actualizaciones de por vida; después, el soporte termina (con la suscripción se amplía por 100,71 €/año).
- Un solo pago, sin cobros automáticos.
Reemplaza el buscador nativo de PrestaShop por un overlay fullscreen visual con resultados en tiempo real. Motor de búsqueda dual (MySQL + Meilisearch opcional), búsqueda difusa tolerante a erratas, filtros facetados por categoría, fabricante y precio, botón de carrito directo desde los resultados y estadísticas de búsqueda con CTR. Totalmente personalizable en apariencia, multitienda, multiidioma y compatible con PrestaShop 8.x y 9.x.
Instalación, actualizaciones y soporte
Instalación sin coste
¡Nosotros lo hacemos por ti! Te instalamos y configuramos el módulo en tu tienda totalmente gratis, garantizando un inicio rápido y sin complicaciones técnicas.
Actualizaciones vitalicias
Accede de forma permanente a la última versión de tu módulo. Tu inversión está protegida y siempre será compatible con las nuevas versiones de PrestaShop.
Calidad certificada
Nuestros módulos han pasado por la validación oficial de PrestaShop, asegurando su seguridad, rendimiento y compatibilidad con los estándares de la plataforma.
Soporte premium (1 año)
Tienes un año completo de asistencia dedicada. Cualquier duda o problema que surja en relación al módulo será resuelto por nuestro equipo experto.
¿Por qué hemos hecho este módulo?
En el mercado actual de PrestaShop, las soluciones de búsqueda realmente visuales y potentes, como Doofinder, Motive o ApiSearch, están reservadas a quienes pueden permitirse un modelo de pago por uso que resulta extremadamente costoso.
Rekire Free Visual Search nace como una solución "todoterreno" que combina la elegancia de las herramientas de élite con la libertad de una solución en propiedad.
- Rendimiento sin cuotas: Recupera el control total de tus costes sin pagar "alquiler" por cada búsqueda.
- Escalabilidad Inteligente: Para catálogos masivos o tráfico elevado, usa Meilisearch self-hosted en un VPS independiente para obtener velocidad de nivel enterprise.
- Garantía de Resiliencia: Si tu servidor externo falla, el sistema conmuta automáticamente a tu propio motor MySQL para que nunca dejes de vender.
Especificaciones Técnicas
| Overlay Fullscreen | Resultados visuales con imagen, precio y stock en tiempo real. |
| Motor Dual | Usa MySQL nativo o Meilisearch para respuestas en menos de 50ms. |
| Búsqueda Fuzzy | Tolerante a erratas mediante sistema de trigramas configurable. |
| Compra Directa | Botón de añadir al carrito y modal de combinaciones integrado. |
| Caché con Warmer | Precarga de búsquedas frecuentes para respuesta inmediata. |
* Compatible con PrestaShop >.8, 8.x / 9.x, multitienda y multiidioma.
Buscador
La misma velocidad que pagas todos los meses, pagada una sola vez.
Los buscadores que responden en milisegundos, toleran erratas y filtran sobre la marcha se alquilan por entre 50 y 300 euros al mes, para siempre. Rekire Free Visual Search hace lo mismo dentro de tu tienda, con tu servidor y tu catalogo, y se paga una vez.
/ Se abre encima, no te saca de donde estabas
El cliente escribe y el buscador se despliega sobre la pagina. Resultados desde la primera letra, mientras teclea, y los filtros se construyen con lo que ha encontrado: categorias, marcas, caracteristicas, atributos y rango de precio, cada uno con el numero de productos que le corresponden. Sin recargar y sin perder el sitio.
/ Velocidad de verdad, no una promesa
El motor no recorre tus tablas de productos en cada busqueda: lee un indice de tokens construido a partir de ellas, con cache de resultados y precalentamiento programado de los terminos mas buscados. Y si quieres ir mas lejos, admite Meilisearch como motor, con vuelta automatica a MySQL si el servidor no contesta: la tienda no se cae por un buscador.
/ Te dice lo que tus clientes buscan y no encuentran
Cada busqueda queda registrada: los terminos mas pedidos, en que resultados se pincha y —lo que de verdad vale dinero— que buscan y no aparece. Esa lista es un plan de compras: son clientes que vinieron a por algo concreto y se fueron con las manos vacias.
Y se puede actuar sobre ella: campanas de correo dirigidas por termino buscado, para avisar a quien pregunto por algo el dia que entra en catalogo.
/ Ajustado a tu tienda, no al reves
/ Lo que no hace
No llama a ningun servidor nuestro, no descarga librerias de un CDN, no modifica ficheros del nucleo y no usa overrides. Tu catalogo no sale de tu maquina, y eso no es una politica de privacidad: es que no hay a donde mandarlo.
Compatible con PrestaShop 1.7, 8.x y 9.x · multitienda y multiidioma
Desarrollado y mantenido por REKIRE
- Marca
- Referenciamod119
- Versiones de prestashop compatibles8.0
8.1
8.2
9.0
9.1
| Versión | 1.4.14 |
|---|---|
| Compatibilidad | PrestaShop 8.0 – 9.1 |
| PHP | 7.4 o superior |
| Multitienda | Sí: índice, pesos, exclusiones, mensajes y estadísticas por tienda |
| Idiomas incluidos | Español e inglés |
| Modifica el núcleo | No: sin overrides |
| Tablas propias | 14: índice, caché, estadísticas, sinónimos, banners… |
| Tareas programadas | Recomendada, no obligatoria: indexa productos nuevos y precarga la caché |
| Requisitos | Ninguno obligatorio; Meilisearch y las claves de IA (Claude, Gemini o ChatGPT) son opcionales |
| Documentación | Guía de uso dentro del back-office, en español e inglés |
v1.5.5
- En el panel del buscador, la etiqueta de oferta («-50 %») quedaba tapada por la de «Exacto» en las tarjetas de coincidencia exacta, porque las dos iban arriba a la izquierda de la foto. En esas tarjetas la oferta baja a la esquina de abajo, como en la página de resultados. Igual en todos los estilos, en escritorio y en móvil.
- En la bienvenida del buscador (más vendidos, sin haber escrito nada), al pasar el ratón por una tarjeta salía una barra negra «Elegir opción» a todo el ancho del panel, arriba, imposible de pulsar. Ahora el botón sale dentro de su tarjeta, como en los resultados.
v1.5.4
- Un producto sin stock con «Permitir pedidos» salía en el buscador como agotado y sin botón de compra, aunque desde la ficha se podía comprar. El buscador leía esa opción de un sitio que la ficha de PrestaShop 8 y 9 ya no actualiza. Ahora la lee del mismo sitio que la ficha, y lo mismo vale para «Ocultar agotados» y para el índice de Meilisearch.
- Con la gestión de stock desactivada en la tienda, todo producto se puede pedir, como en la ficha.
v1.5.3
- Los precios del buscador siguen el IVA del grupo del cliente, igual que la ficha y los listados de PrestaShop. Un grupo configurado para ver los precios sin impuestos (por ejemplo, el de profesionales) los veía con impuestos en el buscador. Ahora coincide en las tarjetas, en el filtro de precio y en el selector de combinaciones.
- La opción «Mostrar precios con impuestos» queda así: encendida, se sigue al grupo de cada cliente; apagada, siempre sin impuestos.
v1.5.2
- Compra rápida: la cantidad y el botón de añadir van en una sola fila, con un botón de solo icono, como el de los listados de la mayoría de temas. Con el producto ya en el carrito sigue saliendo «− N +».
- El color del botón al pasar el ratón venía de serie en rojo puro sobre el botón negro. Ahora es gris oscuro; las tiendas que no lo habían cambiado pasan solas al actualizar, y un color elegido en Apariencia se respeta.
- Filtro «En oferta»: un precio fijo sin descuento (la tarifa de un grupo de clientes, por ejemplo la de profesionales) ya no cuenta como oferta. En una tienda con tarifas por grupo, el filtro marcaba casi todo el catálogo. Ahora cuenta lo mismo que la etiqueta de descuento de la tarjeta.
v1.5.1
- Los productos que otro módulo oculta a un visitante ya no salen en el buscador: ni en el desplegable, ni en la página de resultados, ni en los destacados, y tampoco cuentan en el total ni en los filtros. El buscador pregunta con el gancho
actionRkrFilterVisibleProductIds(recibeidspor referencia y quita los que no se ven); lo usa, por ejemplo, RKR Private Products para enseñar ciertos productos solo a una lista de clientes. - El botón Añadir del buscador rechaza esos productos aunque se le mande su id a mano.
- Con un módulo así instalado, la caché de resultados se guarda por cliente: lo que ve un cliente de la lista no se le sirve a otro visitante, ni al revés.
v1.5.0
Para tiendas cuyos clientes hacen la compra directamente desde el buscador. Las opciones nuevas están en Apariencia, en el bloque «Comprar desde el buscador».
- Ofertas a la vista: los productos con descuento llevan sobre la foto la etiqueta «-20 %» (o «-5,00 €» si el descuento es un importe) y, junto al precio, el precio de antes tachado, como en la ficha. Los que solo tienen la marca «En oferta» de PrestaShop llevan «¡En oferta!». Cuentan los precios específicos y las reglas de catálogo vigentes para el cliente; el descuento de su grupo no, porque es su precio de siempre. Encendido al actualizar (se apaga en «Descuento y precio anterior»).
- Filtro «En oferta» en el panel de filtros del buscador y de la página de resultados, con el número de productos rebajados entre los encontrados. Sale solo si hay alguno. Se mira al buscar, no al indexar, así que una oferta que empieza o acaba hoy cuenta sin reindexar. Encendido al actualizar.
- Compra rápida (apagada al actualizar): la cantidad y el botón Añadir se ven siempre en cada producto, no solo al pasar el ratón. En cuanto el producto está en el carrito, el botón pasa a «- cantidad +» con las unidades que ya hay: cambiarlo deja esa cantidad en el carrito (escribir 12 deja 12, no suma 12) y bajarlo a 0 lo quita. Si el carrito cambia desde la cabecera, se pone al día. Vale para productos sin combinaciones; los demás siguen con «Elegir opción».
- Stock como semáforo (apagado al actualizar): un punto verde con stock, ámbar con pocas unidades («Últimas unidades») y rojo agotado. «Pocas» es por debajo de la cifra que se ponga en «Pocas unidades desde», o, con 0, del ajuste de PrestaShop «Mostrar las cantidades restantes cuando sean inferiores a».
- Corregido: «Añadir» decía «Añadido al carrito» aunque la tienda no lo hubiera añadido (otro módulo que lo quita al momento). Ahora avisa de que no se pudo.
- Corregido: con el modo depuración encendido, los avisos de otros módulos salían delante de la respuesta del carrito y el botón daba «Error de conexión». No hay que hacer nada al actualizar: la caché de búsquedas se vacía sola.
v1.4.64
- Corregido: en la página de resultados de búsqueda, la opción de Apariencia «Mostrar precio» no se respetaba y el precio salía siempre. El buscador desplegable sí la respetaba. Los grupos de clientes sin permiso para ver precios ya estaban cubiertos desde la 1.4.58, en las dos vistas. No hay que hacer nada al actualizar.
v1.4.63
- Nombre completo del producto al pasar el ratón: si el nombre no cabe en la tarjeta y se corta con «…», al poner el ratón encima aparece un globo con el nombre entero sobre la parte baja de la foto. No tapa el precio ni mueve la rejilla. Solo en ordenador (en móvil no hay «pasar por encima»). En tiendas de calzado, por ejemplo, el modelo y el color no cabían en dos líneas.
- En los estilos Clean y Superclean el nombre llega hasta 3 líneas (antes 2): sin marco alrededor del producto, que unos nombres ocupen una línea más no se nota, y así se cortan muchos menos, también en móvil.
- Corregido: en las sugerencias de arriba, el texto completo que sale al pasar el ratón mostraba «&» en lugar de «&» en los nombres con ese signo. No hay que hacer nada al actualizar.
v1.4.62
- Corregido: los productos sin stock que se pueden pedir («Disponible bajo pedido»: el producto, o la tienda, admite pedidos sin stock) salían con un botón «Consultar» y al pulsarlo daba el error «Insufficient stock» sin añadir nada. Ahora llevan «Añadir» y se añaden como en la ficha. En las tiendas que venden mucho bajo pedido (visto en lacasadelassetas.com: 912 de 1.519 productos) el botón no servía en más de la mitad del catálogo.
- Corregido: en la ventana «Elegir opción», una variante sin stock pero que se puede pedir salía «Agotado» y no se podía añadir. Ahora sale «Disponible bajo pedido» y se añade.
- El botón flotante «Filtros» del móvil se puede pintar con el color de la tienda: lee
--rkfvs-filter-toggle-bgy--rkfvs-filter-toggle-text(por defecto, como hasta ahora: el color principal y texto blanco). Antes el color iba fijo en línea y no había CSS que lo cambiara.
v1.4.61
- Nueva opción «Recordar la búsqueda al volver atrás» (General). Si el cliente entra en un producto desde el buscador y vuelve con el botón Atrás, el panel se abre otra vez como estaba: la misma búsqueda, los mismos filtros y orden, los productos que ya había cargado y a la altura del producto que vio. Antes volvía a la página con el panel cerrado y tenía que buscar de nuevo. Si cierra el panel a mano, al volver ya no se abre. Viene apagada al actualizar: se enciende en Configuración > General.
v1.4.60
- Una letra suelta junto a otras palabras ya cuenta: «vitamina c» pone primero las vitaminas C (antes se buscaba solo «vitamina» y salían la D3, la B12…). Igual con «vitamina e», «vitamina k»… La letra debe estar como palabra entera en el nombre: «c» no casa con «complex». Una letra sola sigue sin buscarse. No hay que hacer nada al actualizar.
v1.4.59
- El estado de stock («En stock», «Disponible bajo pedido», «Agotado») vuelve a salir en las tarjetas del panel para los grupos que no ven precios. En la 1.4.58, ocultar el precio por grupo se llevaba también la etiqueta de stock.
- Estilos «Clean» y «Superclean»: el bloque de filtros es mucho más compacto, en el panel y en la página de resultados (cada filtro cerrado ocupa la mitad de alto). No hay que hacer nada al actualizar.
v1.4.58
Precios solo para quien puede verlos
- El buscador respeta «Mostrar precios» del grupo de clientes (Clientes > Grupos). En una tienda B2B con el grupo Visitante sin precios, el panel y la página de resultados enseñaban el precio y el botón de añadir al carrito. Ahora, para esos grupos, no salen ni el precio, ni el filtro y la ordenación por precio, ni el botón del carrito, y el carrito del buscador rechaza la petición.
- La caché de resultados se guarda por grupo de clientes y moneda: ya no sirve los precios de un grupo a otro.
La primera letra ya no se pierde
- Al tocar la caja de búsqueda del tema y escribir enseguida, la primera letra se quedaba en esa caja («proteina» buscaba «roteina»). El foco pasa al buscador del panel en el mismo toque y, si algo se cuela en la caja del tema, se lleva al panel. No hay que hacer nada al actualizar.
v1.4.57
Error de JavaScript al añadir un formulario a la página
- Si otro módulo o el tema añadía a la página un formulario con un campo llamado
id, la consola mostrabanode.id.startsWith is not a function, y el buscador dejaba de retirar el autocompletado nativo que llegara junto a ese formulario. No hay que hacer nada al actualizar.
v1.4.56
Listo para el validador de PrestaShop Addons
Revisión de código sin funciones nuevas. Tampoco hay que hacer nada al actualizar.
- El aviso de idiomas sin indexar nunca salía: su consulta llevaba un
LIMITde más. Con el modo depuración activo, ese error de SQL rompía las pantallas del módulo que lo muestran. Viene de la 1.4.39. - La ordenación de resultados usa el idioma y la tienda de la búsqueda en curso, no los del contexto global. Se nota en la tarea que precalienta la caché, que recorre todos los idiomas y tiendas: ahora ordena cada uno con sus sinónimos y sus pesos.
- El aviso de idiomas sin indexar sale de una plantilla, no del PHP.
- Los ejemplos de este registro y los comentarios del código ya no nombran tiendas concretas.
v1.4.55
Multitienda: cada tienda se busca con su propio texto
Si un producto se llamaba distinto en dos tiendas, el buscador usaba para todas el nombre y la descripción de la última: renombrarlo en una tienda no se encontraba en esa tienda, y lo mismo pasaba con los nombres de las categorías. Ahora cada tienda tiene su propio índice de texto, con sus pesos y sus características excluidas, sin importar desde qué tienda se guarde el producto.
También se arregla lo que dependía de la tienda desde la que se guardaba:
- Desactivar u ocultar un producto en una tienda lo quitaba del buscador de todas. Ahora solo sale de esa tienda.
- Un producto guardado desde una tienda donde no está desaparecía del buscador de las tiendas donde sí estaba.
- «Disponible» sale del stock de cada tienda. Con stock compartido entre tiendas, los productos se indexaban como agotados en todas.
- Reconstruir el índice incluye los productos de todas las tiendas, no solo los de la tienda desde la que se lanza. Tras actualizar, en una tienda con multitienda los productos se reindexan solos por tandas con el cron. Si no usas cron, pulsa «Reconstruir índice». Con una sola tienda no hay que hacer nada y no cambia ninguna fila del índice.
El mismo orden en cada búsqueda
Los productos con la misma puntuación podían cambiar de orden entre dos búsquedas idénticas, y un producto podía repetirse o faltar al pasar de página. Ahora, a igualdad, sale primero el producto más reciente.
v1.4.54
Guardar un producto sin cambios ya no reescribe el índice
Un conector con el ERP guarda miles de productos aunque no haya cambiado nada, y cada guardado borraba y volvía a insertar todas las filas del producto en el índice de búsqueda. Ahora el buscador guarda una huella de cada producto y, si no ha cambiado, no escribe nada. La tabla del índice deja de crecer y el guardado es más ligero.
Cuando sí cambia algo se escribe solo la diferencia: renombrar un producto toca dos o tres palabras, no cientos de filas. Si solo cambian las ventas o el stock, se actualizan esas columnas. Tras actualizar no hace falta reindexar: la primera vez que se guarda cada producto se compara con lo que ya hay en el índice.
Las búsquedas guardadas dejan de vaciarse sin motivo
La caché de búsquedas se vaciaba en cada guardado de producto, de categoría o de fabricante, y también cada vez que cualquier módulo limpiaba una plantilla suya, cosa que muchos sliders de tema hacen al guardar un producto. Ahora solo se vacía si ha cambiado algo que afecta a los resultados: texto, precio, categorías, fabricante, combinaciones, características o si el producto se puede comprar. El botón «Borrar caché» del back office también la vacía, cosa que antes no hacía.
La cola de reindexado no pierde productos
Los productos que no se indexan en el momento (importaciones, lotes grandes) esperaban en una lista de 500 que, al llenarse, olvidaba los más antiguos: esos se quedaban con el índice viejo. Ahora están en su propia tabla, sin límite, y el cron avanza por tiempo (25 s por pasada) en lugar de 100 productos fijos. Al terminar vacía la caché si algo cambió, y envía lo cambiado a Meilisearch.
Búsquedas de varias palabras más rápidas
El peso de cada palabra contaba los productos del índice en cada búsqueda de dos o más palabras, también al servirla desde la caché. Ahora ese total sale de una consulta directa: en un catálogo de 10.000 productos es la diferencia entre segundos y milisegundos cuando la base de datos va justa de memoria.
v1.4.53
Página de resultados en móvil
En pantallas de menos de 768 px los filtros ya no se quedan al lado de los productos con 280 px fijos (la lista quedaba aplastada en todos los estilos). Ahora van encima, plegados tras un botón «Filtros» que los abre y los cierra; siguen abiertos al aplicar un filtro, y los productos salen de dos en dos. En escritorio no cambia nada.
v1.4.52
Estilos «Clean» y «Superclean» para los resultados
Dos estilos nuevos en Apariencia → Quick Design Presets, para el panel de búsqueda y para la página de resultados:
- Clean: todo blanco y sin cuadro alrededor de cada producto. Queda la foto sobre un gris muy claro, el nombre y el precio; al pasar el ratón la foto se atenúa un poco y el nombre se subraya, sin saltos ni sombras. Los filtros pierden sus cajas y quedan separados por una línea fina. En el panel, el botón que sale al pasar el ratón va al pie de la foto y ya no tapa el precio.
- Superclean: lo mismo, y además sin banners ni mensaje de bienvenida y sin el color de la tienda: etiquetas, botones, barra de precio y líneas de separación (filtros, «Coincidencia exacta») pasan a negro y gris claro. Las tiendas que ya usan otro estilo no cambian.
v1.4.51
Con varias palabras, manda la más específica
Al buscar dos palabras, una muy común en los nombres del catálogo y otra rara («camiseta algodón» en una tienda donde casi todo es camiseta), los productos que solo llevaban la común iban por delante de los que llevaban la rara, solo por empezar por la primera palabra. Ahora cada palabra pesa según en cuántos nombres de producto aparece: la rara cuenta más que la común. Los que llevan las dos siguen primero. No hace falta renombrar productos.
Las palabras vacías («con», «para», «del», «the», «with»…) no pesan y solas no meten un producto en los resultados: un producto con «(con regalo)» en el nombre ya no sube por eso, y una búsqueda como «camiseta con cuello» deja de devolver medio catálogo.
Ventana de variantes sin barra horizontal y sin nombres repetidos
- El nombre de cada variante salía repetido una vez por cada imagen de la combinación («Color: Rojo / Color: Rojo / Color: Rojo…»). Ahora sale una vez y solo con lo que distingue a la variante: el valor, sin el nombre del grupo, y sin los grupos que valen lo mismo en todas («Rojo» y no «Color: Rojo / Talla: Única»).
- En el móvil la ventana tenía barra de desplazamiento horizontal: el nombre iba en una sola línea. Ahora ocupa hasta dos líneas, y la cantidad y «Añadir» van debajo, así que cada fila cabe a lo ancho. El upgrade tira el CSS/JS combinado de la tienda y la caché de búsquedas.
v1.4.50
Las tarjetas respetan «Mostrar precio» y «Disponible para pedido»
Un producto con «Mostrar precio» desactivado salía en el buscador a 0,00 €, con «Disponible bajo pedido» y con el botón de añadir al carrito: lo que una tienda solo quiere enseñar (un catálogo de máquinas, un producto a medida) parecía regalado y se podía comprar. Ahora la tarjeta hace lo mismo que la ficha de PrestaShop: sin «Mostrar precio» (o en modo catálogo sin precios) no lleva precio, ni etiqueta de stock, ni botón de compra; sin «Disponible para pedido» enseña el precio, pero no el stock ni el botón.
Precio 0: «Solicitar precio y disponibilidad»
Un producto con precio 0 y el precio a la vista enseña un texto en lugar de 0,00 €, sin etiqueta de stock ni botón de compra. El texto es configurable por idioma en Apariencia → Detalles de la tarjeta.
La etiqueta de stock ya no tapa el precio
La etiqueta subía 25 px para ponerse al lado del precio, y un texto largo («Disponible bajo pedido») lo tapaba. Precio y stock van ahora en una fila que, si no cabe, pasa la etiqueta debajo.
Una característica bajo el nombre, que se busca como la referencia
En Apariencia → Detalles de la tarjeta se elige una característica (por ejemplo, la referencia del fabricante u OEM) que la tarjeta enseña bajo el nombre (dos líneas como mucho). Sus valores se indexan además con los códigos de referencia y pesan como «Ref:»: buscar uno de esos códigos saca el producto primero. Hay que reindexar después de elegirla.
Etiqueta de tipo por característica
Se eligen una característica y uno o varios de sus valores (por ejemplo, Familia = Máquina). Sus productos llevan el valor como etiqueta encima del nombre y, en lugar del botón de compra, un rótulo hacia la ficha con el texto que se configure («Ver productos compatibles» si se deja vacío).
«Ir a…»: primero la categoría que se llama como lo buscado
Las categorías salían por profundidad y posición: un código de modelo daba antes las categorías que lo contenían dentro de otra palabra («MX2000», «FMX200S») que la que lo tenía entero («Office MX200»). Ahora manda el parecido del nombre: igual, palabra entera, empieza por, lo contiene.
El modelo buscado sale antes que sus consumibles
Buscar un código de modelo daba como exacto a un producto cuyo nombre empezaba por ese código seguido de otra cifra («MX2000» para «MX200»). Y el producto que se llama así («Office MX200») puntuaba como los cientos de consumibles «para Office MX200…» y, a igualdad, mandaban las ventas, que un producto de catálogo no tiene. Ahora una cifra más ya no es el mismo código, y un nombre corto que acaba en el código buscado va primero.
Al actualizar se vacía la caché de búsquedas, que guardaba las tarjetas con el precio de antes.
v1.4.49
La lupa del buscador ya no está oculta para los lectores de pantalla
Al convertir la lupa del buscador del tema en botón (con foco, role="button" y su aria-label), el módulo dejaba el aria-hidden="true" que trae la plantilla de ps_searchbar. Un elemento que recibe el foco no puede estar oculto: Lighthouse lo marcaba como «Los elementos [aria-hidden=true] contienen elementos descendientes seleccionables» y la puntuación de accesibilidad bajaba. Ahora se quita ese atributo al convertirla. Solo cambia el JS: no hay nada que actualizar en la base de datos.
v1.4.48
Encuentra lo que se escribe de oído
Una palabra mal escrita que no está en el índice se busca también por cómo suena en español: «kolageno» encuentra «collagen», «proteyna» encuentra «protein», «kafeina» encuentra «caffeine» y «bitamina» encuentra «vitamin». Antes caía en la búsqueda aproximada, que aceptaba palabras de las descripciones que solo se parecían en las letras («oxigeno» para «kolageno») y llenaba los resultados de productos sin relación.
Reglas: la h no suena; w y hu suenan igual; k, c y qu también; ce, ci y z; ge, gi y j; b y v; y e i; las letras dobles cuentan como una, y no importa la vocal final. Una palabra bien escrita se busca tal cual, así que lo que ya funcionaba no cambia. Los sinónimos de la palabra encontrada también cuentan («kolageno» → «colageno» → «collagen»).
Una búsqueda sin parecido no se rellena con cualquier cosa
La búsqueda de último recurso comparaba trozos de tres letras con los nombres: «biscuit» sacaba productos con «bis» en el nombre y, detrás, ocho más de su categoría. Ahora solo usa variaciones casi enteras de la palabra; si nada se parece, no hay resultados y salen las búsquedas populares.
El upgrade crea la tabla de claves fonéticas y la rellena con las palabras que ya están en el índice, sin reindexar, y vacía la caché de búsquedas.
v1.4.47
Una referencia de modelo completa sale primero
Al buscar una referencia de modelo con letras y cifras («et-14100», «ET 14100», «et14100»), los productos que la llevan en el nombre podían quedar cientos de puestos por debajo, por dos motivos:
- La parte corta metía cientos de productos. Igual que el número corto en la 1.4.46, una parte de una o dos letras («et») casaba como prefijo con etiquetas y con cualquier otro modelo «ET-…». Ahora, si la búsqueda tiene otra parte más larga, un producto tiene que casar al menos esa.
- Los agotados se iban al final de toda la lista, por detrás incluso de «También te podría gustar». Ahora van al final de su propio bloque: una coincidencia exacta sin stock sigue por delante de los relacionados. Además, una referencia de modelo que está entera en el nombre cuenta como coincidencia exacta, con o sin guion: «et14100» casa con «ET-14100», pero no con «ET-141000». El upgrade vacía la caché de búsquedas.
v1.4.46
Un número corto ya no basta para entrar en los resultados
La 1.4.45 dejó de contar un número corto suelto al ordenar, pero la consulta seguía metiendo en los resultados cualquier producto con ese número en la descripción o en las características: con «whey 80» entraban productos con «80 cápsulas» o «800 mg», y como no casaban en el nombre salían en «También te podría gustar». Ahora, si la búsqueda tiene palabras y un número de una o dos cifras, un producto tiene que casar al menos una de las palabras. Con pocos resultados, el bloque se completa con productos de la misma categoría, como en la 1.4.45.
El upgrade vacía la caché de búsquedas.
v1.4.45
Los sinónimos cuentan también al ordenar
La consulta ya buscaba los sinónimos («proteina» → «protein»), pero el paso que separa coincidencias exactas, relacionadas y «También te podría gustar» comparaba solo la palabra tecleada con el nombre. Todo lo encontrado por sinónimo caía en «También te podría gustar» y se ordenaba por ventas, así que salía primero el producto más vendido aunque no tuviera nada que ver, y una búsqueda con falta de ortografía enseñaba ese rótulo encima de todo. Ahora una palabra casa con el producto si casa ella o uno de sus sinónimos activos, y «proteina» ordena igual que «protein». Vale con «Promocionar coincidencias exactas» encendido y apagado.
Un número corto suelto ya no hace relacionado a un producto
Con varias palabras, coincidir solo en un número de una o dos cifras bastaba para entrar en relacionados y sumar puntos: con «omega 3» salían un «Pack 3» de otra cosa o un formato de «30g» por delante de los omega. Ahora el número cuenta solo si también casa alguna palabra.
«También te podría gustar» con pocos resultados, sin Meilisearch
Una búsqueda con menos de 8 resultados se completa con hasta 8 productos que comparten categoría con ellos: primero la categoría más concreta que compartan (una subcategoría antes que su categoría madre; la raíz y la de inicio no cuentan) y después los más vendidos. Respeta las categorías y fabricantes excluidos y «Ocultar agotados». Solo con orden por relevancia y sin filtros. Hasta ahora esto solo lo hacía la ruta de Meilisearch, y solo sin resultados.
El upgrade vacía la caché de búsquedas, que guarda el orden final.
v1.4.42
Las imágenes rotas de otros módulos ya no desaparecen
El buscador escuchaba los errores de carga de todas las imágenes de la página y escondía cualquiera que fallase, aunque no fuese suya, añadiéndole además su icono de «sin imagen». Una imagen que otro módulo crea vacía y rellena después —el código QR del modal de compartir de un carrito, por ejemplo— quedaba oculta para siempre.
Ahora solo se tratan las imágenes que están dentro del buscador, de su página de resultados o de sus banners. Dentro del módulo nada cambia: una imagen de producto que no carga sigue sustituyéndose por el icono.
v1.4.41
Otros módulos ya pueden guardar el carrito tras guardar un producto
Al guardar un producto, el buscador lo indexa y necesita un carrito en el contexto para calcular el precio (sin él, Product::getPriceStatic() hace die() en PrestaShop 1.7.8, 8.2 y 9.0). Si el carrito del contexto aún no tenía ID, lo cambiaba por un new Cart() vacío, sin moneda. En el escaparate ese carrito sin ID es el que PrestaShop deja preparado para el visitante, así que cualquier módulo que guardase un producto desde la tienda y después el carrito fallaba con «La propiedad Cart->id_currency está vacía». Visto con un personalizador de prendas: el primer diseño de cada producto no entraba en el carrito.
Ahora solo se crea un carrito cuando no hay ninguno (consola, webservice), y se rellena como lo hace el núcleo: idioma, moneda y tienda.
El «añadir al carrito» del panel también guarda ya el carrito que tenía preparado la tienda en vez de crear otro, así que conserva el visitante (id_guest) como el carrito normal de PrestaShop.
v1.4.38
Al escribir, los resultados salen arriba y no debajo de la bienvenida
Visto en iogenixdise (PS 8.2) al buscar «Isolate»: con la consulta escrita, el panel seguía enseñando «Búsquedas populares» y «Más vendidos», y los resultados, con la coincidencia exacta en cabeza, quedaban a ~1.580 px de la parte de arriba.
Era una carrera. Al abrir el panel se pide la bienvenida al servidor, y si el cliente escribía antes de que llegara, la respuesta pintaba la bienvenida encima de los resultados. Ahora esa petición se cancela en cuanto hay consulta, y si ya estaba en camino no se pinta. Con la bienvenida retrasada 4 s a propósito, los resultados quedan a 192 px y la primera ficha a 236 px, sin CSS del tema.
El bloque de mensaje propio, enlaces y «Categorías más encontradas», que solo sale con consulta, pasa de encima de los resultados (169 px) a detrás de ellos.
Una búsqueda, una petición
- Cada consulta salía dos veces al servidor.
rkrfreevisualsearch-nav.jsenvolvíaexecuteSearchcon_origExecute(query).then ? _origExecute(query)…: la comprobación ya lanzaba la búsqueda y la rama la lanzaba otra vez. - Al abrir el panel salían 2 o 4 búsquedas vacías. Una pedía «productos destacados» con
featured_only, un parámetro que el servidor no ha leído nunca, y la respuesta no traía nada que pintar: se ha quitado. Además, el tema llama aopen()con el foco y con el clic de su caja, y la segunda llamada repetía la bienvenida y borraba lo escrito: ahora no hace nada si el panel ya está abierto. - Filtros, orden y límite no cancelaban la búsqueda anterior y dos respuestas podían llegar en cualquier orden. Ahora toda búsqueda cancela la que esté en camino, y una respuesta vieja se descarta aunque llegue (también las de «cargar más» y las del autocompletado).
El autocompletado tardaba lo que una página entera
autocomplete.php llamaba a parent::initContent(), que en PrestaShop asigna las variables de página y ejecuta displayHeader con los ganchos de todos los módulos de la tienda. En iogenixdise eran 3,6 s de cada petición, también con el autocompletado apagado, porque la comprobación iba después. Ahora 0,1–0,2 s (0,9 s la primera vez). search.php nunca lo hizo. addcart.php hacía lo mismo y también deja de hacerlo: añadir al carrito desde el panel, 0,17 s.
La tira de autocompletado, con miniatura y sin tapar nada
Flotaba sobre el panel (position: absolute), tapaba las búsquedas populares y solo llevaba texto. Ahora va en el flujo, arriba de la columna de resultados, en una sola fila que se desplaza en horizontal (~70 px), y cada producto lleva su miniatura: el servidor ya mandaba image_url. Intro sobre una sugerencia marcada con las flechas no hacía nada (la lista que leía estaba siempre vacía) y ahora la abre.
El buscador tardaba segundos en tiendas con historial de pedidos
Medido en maesalv9 (PS 9.1.4, 1.083 productos, 535.838 líneas de pedido):
- Fichas de producto (
ProductDataProvider::getProducts): las unidades vendidas se sumaban deorder_detail+ordersen cada petición, ~1 s por producto vendido. Al abrir el buscador (consulta vacía) los 12 «más vendidos» tardaban 9,8 s. Ahora salen derkrfreevisualsearch_index.total_sold, que el Indexer ya calcula con la misma suma (mismos números); solo lo no indexado se calcula como antes. Consulta vacía: 10,1 s → 0,22 s; «ceramico»: 2,4 s → 0,4 s. Las respuestas son idénticas byte a byte. - Autocompletado: se montaban las fichas de hasta 80 candidatos para enseñar 8 y luego se descartaban los que no casaban (1,7 s). Ahora se filtra antes con nombre, referencia y EAN de una consulta y solo se montan
limit * 2fichas. 2,2 s → 0,15–0,4 s, mismas sugerencias. En iogenixdise (PS 8.2, 346 productos, 578.153 líneas de pedido), «Isolate» pasa de 12 s a 0,3 s sin caché, y la consulta vacía de 5 s a 0,24 s. La búsqueda difusa (FUZZY, umbral 60) yMAX_PRODUCTS_QUERY=100no eran el cuello de botella: una consulta sin resultados, que recorre la difusa, tarda 0,49 s.
Actualizar
upgrade-1.4.38.php solo llama a Media::clearCache(): con «Smart cache» de JS/CSS activado, la tienda seguiría sirviendo el paquete combinado viejo.
v1.4.37
Un banner de imagen o vídeo tiraba la tienda entera en PrestaShop 9.2
Con un banner de tipo imagen o vídeo activo, la portada y las fichas de producto daban un error fatal en PrestaShop 9.2, no solo el buscador: SmartyException: Template './_banner-overlay.tpl' cannot be relative to template of resource type 'module'. _banner-media.tpl incluía el texto del banner con una ruta relativa (./_banner-overlay.tpl), y el Smarty de 9.2 ya no admite rutas relativas dentro de una plantilla cargada como module:.
Ahora se incluye con su ruta completa (module:rkfreevisualsearch/views/templates/hook/_banner-overlay.tpl), como el resto de plantillas del front. No hace falta upgrade: es solo la plantilla. Reproducido en 9.2.0 con la versión anterior y comprobado con la nueva en 9.2.0, 9.1.5, 9.0.0, 8.2.8 y 1.7.8.11 (portada con un banner de imagen arriba y uno de vídeo en el lateral, y la página de resultados). Los include relativos del back-office no cambian: esas plantillas se cargan por ruta de fichero y funcionan también en 9.2.
v1.4.36
La clave de Meilisearch «no se quedaba guardada»
Lo reporto un cliente. La clave SI se guardaba, pero la pantalla decia lo contrario y acababa apagando Meilisearch. Desde 1.4.33 la clave guardada ya no viaja al navegador —el campo sale siempre vacio—, y el JavaScript de la pantalla seguia deduciendo «no hay clave» de un campo vacio: al cargar apagaba y bloqueaba el interruptor y mostraba «API Key is required». Como un checkbox deshabilitado no se envia, el siguiente guardado mandaba el 0 del campo oculto y desactivaba Meilisearch. Y si se forzaba, el PHP rechazaba el guardado con el mismo motivo, porque tambien miraba solo el campo.
Ahora la plantilla dice si hay clave guardada (data-key-set), el JavaScript lo tiene en cuenta y el PHP solo exige la clave si el campo llega vacio y no hay ninguna guardada. Reproducido en 9.2.0 con la version anterior y comprobado con la nueva: guardar con clave, recargar y volver a guardar sin escribirla deja Meilisearch activado y la clave intacta.
v1.4.33
Limpieza. Ninguna funcionalidad cambia para el comerciante; lo que cambia es lo que el modulo hace por debajo y lo que viaja dentro del paquete.
Cada «anadir al carrito» hacia una peticion HTTP del servidor a si mismo
Al anadir un producto desde el buscador, el controlador pedia por cURL el HTML del mini-carrito a la propia tienda, con dos segundos de plazo, dentro del camino de compra. No servia para nada: apuntaba al modulo blockcart, que no existe desde PrestaShop 1.7 —el bloque de carrito nativo es ps_shoppingcart—, asi que la peticion contestaba 404 y el HTML llegaba siempre vacio. Medido en 8.2.8: HTTP 404 y 47 bytes.
Lo que si costaba era tiempo. En una tienda que no se alcanza a si misma por su dominio publico —Cloudflare delante, DNS de horizonte partido, un balanceador, o un certificado que cURL no valida— eran los dos segundos enteros en cada pulsacion, justo en la pantalla donde el cliente decide.
El refresco lo hacia ya el navegador, que es quien lleva la sesion del comprador: los dos ficheros de JavaScript caen a su propio fetch cuando ese HTML viene vacio, o sea siempre. No se pierde nada al quitarlo.
Medido tambien lo que no pasaba, para no contarlo de mas: esa peticion no creaba visitantes falsos en las estadisticas. Antes y despues de cinco llamadas, ps_guest y ps_connections se quedan clavadas en 416 y 446.
Codigo que no ejecutaba nadie
- 176 lineas del JavaScript del indexador (de 530 a 354). Dos pantallas enteras —reindexado con barra de progreso y refresco de estadisticas— se enganchaban a once identificadores que ninguna plantilla del modulo define, comprobado uno a uno. Con ellas se van sus tres ayudantes, que no llamaba nadie mas, y las once reglas de CSS de esa barra de progreso.
- 49 lineas del controlador General: copias de dos hooks del modulo y una segunda implementacion de la cola de reindexado. Son metodos
hookXxx()dentro de un controlador, y PrestaShop despacha los hooks a modulos, asi que no se ejecutaban nunca. La prueba de que llevaban tiempo muertas es que esa copia seguia mirando_PS_MODE_IMPORT_, la constante que la 1.4.32 ya corrigio en el hook de verdad. Las implementaciones vivas, en el fichero principal, no se tocan; la cola que usan el cron y el modulo tampoco. config/services.yaml, que no leia nadie: PrestaShop busca literalmenteservices.yml, comprobado en 1.7.8.11 y 8.2.8. Y no se podia simplemente renombrar, porque activarlo habria intentado construir por autowiring clases con dependencias que no sabe resolver. Con el se va la extension de Twig que solo existia para que ese fichero la registrara: el modulo no tiene ni una plantilla Twig.
Escaparate en seis idiomas
Lo que ve el comprador (los 141 rotulos del buscador) sale ahora tambien en frances, aleman, italiano y polaco, ademas de ingles y español. Antes, en una tienda en esos idiomas el overlay salia en ingles. El back-office del modulo sigue en ingles y español.
Y tres textos que se escapaban de la traduccion en cualquier idioma: «Ir a…» estaba escrito a fuego en español en el JavaScript, y el contador «N results» y su etiqueta accesible, a fuego en ingles.
Multitienda: categorias repetidas y con el nombre de otra tienda
Seis consultas unian category_lang sin filtrar por tienda. En una multitienda cada categoria salia una vez por tienda en los accesos directos de los resultados, y con el nombre de la que tocara: en la tienda polaca de pruebas salian a la vez «Tonery» y «Tóner». Afectaba a los accesos directos, a «categorias mas encontradas», a las facetas y al nombre de la categoria de cada ficha.
Las busquedas populares fijadas a mano no salian nunca
Las que el comerciante pone en Importar / Exportar cuentan cero busquedas, y la lista se ordenaba por numero de busquedas antes de cortar por el limite: en cuanto las estadisticas tenian algo, las manuales quedaban fuera sin avisar. Van primero, en su orden.
El validador de Addons leia mal el nombre del modulo
Lo registraba como «Rekire Free Visual Search - Smart SearchModules.Rkfreevisualsearch.Admin»: saca el nombre juntando todos los literales de la asignacion de $this->displayName, y la llamada a la traduccion llevaba el dominio como literal. El dominio va ahora en una constante. Comprobado subiendo el ZIP: el envio 3767735 ya sale con el nombre bueno, 0 errores y 0 avisos.
Las capturas de la guia ensenaban nuestro laboratorio
Tres de las dieciocho imagenes de la guia llevaban dentro nombres de nuestro entorno de pruebas: un host de Meilisearch y el nombre de un indice en una, y un dominio local en URL de ejemplo en las otras dos. No son credenciales ni datos de nadie —son nombres de maquinas locales— pero viajan en el paquete que compra el cliente y no pintan nada ahi. Sustituidos por valores neutros.
v1.4.14
- Nuevo Guía de uso dentro del back-office, en español y en inglés, con capturas y ayuda en cada pantalla.
- Corregido Activar Meilisearch ya no puede dejar la tienda sin servicio si su servidor no responde o es antiguo.
- Corregido Corregidos los enlaces de los banners, el mensaje de bienvenida, los diseños oscuros y los pesos en multitienda.
- Seguridad Corrección de seguridad, claves de API guardadas cifradas y todas las librerías dentro del módulo, sin CDN externos.
v1.4.13
- Corregido El filtro de precio vuelve a permitir filtrar por el precio mínimo.
v1.4.12
- Corregido Los colores configurados se aplican al botón de carrito y a la ventana de combinaciones.
v1.4.8
- Nuevo Los banners admiten imagen, vídeo o productos, y se pueden generar con IA.
- Nuevo Campañas por correo a quien buscó un término, con su consentimiento registrado la primera vez que busca.
- Corregido Corregidos la ventana y los permisos de la página completa, y un fallo del editor de textos.
v1.3.7
- Mejorado Búsqueda más afinada, también cuando el nombre del producto lleva números.
- Nuevo Opción de pasar al buscador de PrestaShop al pulsar Intro o la lupa.
- Nuevo Nuevo modo de presentación Classic, sin capa a pantalla completa, y modo de página completa operativo.
- Mejorado Mejor elección entre scroll infinito y paginación.
v1.2.33
- Corregido Corregida la actualización del índice al guardar un producto.
v1.2.8
- Corregido Filtros corregidos y mejorados.
v1.2.7
- Mejorado Módulo traducido por completo al inglés, con todos los textos traducibles.
- Mejorado Retoques visuales en el back-office y en la tienda.
- Seguridad Mejoras de seguridad.
v1.2.5
- Nuevo Color de fondo configurable para las etiquetas de la búsqueda predictiva.
- Mejorado Retoques de colores y tamaños.
v1.2.4
- Nuevo Sección «Puede que te interese» con productos sugeridos cuando hay pocos resultados.
- Mejorado Búsqueda aproximada mejorada con el motor MySQL y mejoras visuales.
v1.1.0
- Nuevo Banners programables en la parte superior o en el lateral del buscador.
- Nuevo Posibilidad de excluir marcas de la búsqueda.
- Mejorado Aviso en los productos sin stock que se pueden seguir comprando.
- Mejorado Mejoras visuales y correcciones menores.
v1.0.27
- Nuevo Los productos nuevos o editados se reindexan solos.
- Nuevo Precio con o sin impuestos, a tu elección.
v1.0.25
- Nuevo Exclusión de categorías y características en la búsqueda.
- Nuevo Indexación automática por tarea programada, que detecta productos sin indexar y sincroniza Meilisearch.
- Mejorado Precarga automática de los términos más buscados y estadísticas mejoradas.
- Mejorado Búsqueda aproximada más fina, que ignora términos demasiado cortos, y mejor presentación en pantallas 2K y 4K.
v1.0.24
- Mejorado Mejoras visuales y corrección de errores.
v1.0.23
- Nuevo Lanzamiento del módulo.
En Rekire queremos ponerte las cosas fáciles. Por eso, nuestros módulos de PrestaShop cuentan con una licencia de uso flexible:
- Uso ilimitado en tus proyectos. Puedes utilizar el módulo en tantas instalaciones de tu propiedad como quieras, incluso si eres una agencia y gestionas varias webs (sin necesidad de que sea en modo multitienda).
- Restricciones de distribución. Lo que no está permitido es intercambiar, distribuir, vender o republicar el módulo a terceros.
Ética profesional. Este software es nuestro modo de vida. Te pedimos ética profesional y que realices nuevas compras si el volumen de proyectos lo requiere: es la única forma de que nos compense seguir desarrollando módulos tan «guais» y mantener nuestras mejoras constantes.
Soporte técnico
Para poder ofrecerte la mejor atención, el soporte de los módulos se rige por estas condiciones:
- El soporte se presta exclusivamente sobre el sitio web declarado como principal.
- Si no has declarado un sitio principal, el soporte se aplica automáticamente a la primera instalación donde se active el módulo.
También te podría gustar
4 otros productos de la misma categoría
También podría interesarte
Preguntas y respuestas
¿Tiene cuota mensual o límite de búsquedas?
0No. Se paga una vez, sin límite de búsquedas ni de productos, y funciona dentro de tu tienda con tu servidor: tu catálogo no sale de tu máquina.
¿Necesito instalar Meilisearch?
0No. Por defecto usa su propio índice de tokens sobre MySQL, con caché de resultados y precalentamiento de los términos más buscados. Meilisearch es opcional, y si su servidor no contesta el buscador vuelve solo a MySQL.
¿Usa overrides o llama a servidores externos?
0No. No llama a ningún servidor de Rekire, no descarga librerías de un CDN, no modifica ficheros del núcleo y no usa overrides.
¿Puedo saber qué buscan mis clientes y no encuentran?
0Sí. Cada búsqueda queda registrada: los términos más pedidos, en qué resultados se pincha y qué se busca sin resultados. Sobre esa lista puedes lanzar campañas de correo por término buscado, para avisar a quien preguntó por algo el día que entra en catálogo.
¿Funciona en una tienda multiidioma o multitienda?
0Sí. Es multitienda y multiidioma, y el buscador que ve el cliente está traducido a español, inglés, francés, alemán, italiano y polaco. Puedes añadir sinónimos por idioma, también importándolos por CSV.
¿Con qué versiones de PrestaShop funciona y cuántas tiendas cubre la licencia?
0Es compatible desde PrestaShop 1.7.8 hasta 8.x y 9.x. Una sola licencia vale para todas tus tiendas PrestaShop.













































