Sin impuesto Con impuesto

Productos importados que no salen en el buscador de PrestaShop

Una tienda conectada a un ERP tenía productos que no salían en el buscador hasta reindexar todo. Gustavo dio la solución en código: indexar cada producto al crearlo o cambiarlo. Explicamos cómo funciona el índice y qué hacer si usas importaciones.

Equipo Rekire
Actualizado: 25/03/2023 8
Productos importados que no salen en el buscador de PrestaShop
Compartir:

En Rekire teníamos una tienda conectada a un ERP que actualizaba productos sin parar. Algunos productos figuraban como indexados, pero no salían en el buscador de la tienda hasta que se reconstruía el índice entero. La respuesta corta, que dio Gustavo: si tu conector crea o cambia productos, que indexe cada producto en ese momento con Search::indexation(), y deja el reindexado completo como red de seguridad nocturna.

Cómo funciona el buscador de serie

El buscador nativo de PrestaShop no busca en las fichas en tiempo real. Busca en un índice propio: una tabla de palabras (ps_search_word) y otra que relaciona cada palabra con cada producto y su peso (ps_search_index). Cada producto tiene además una marca, indexed, que dice si ya está en el índice.

Cuando guardas un producto desde el back-office, PrestaShop lo reindexa solo. Como explicó otro miembro del grupo, el cron de indexación sirve para recoger lo que se haya quedado fuera: un fallo, una modificación por otra vía.

Solo entran en el índice los productos activos y con visibilidad «en todas partes» o «solo en búsqueda». Un producto en «solo catálogo» o «ninguna parte» no saldrá nunca en el buscador, esté como esté el índice.

Por qué se quedan fuera los importados

Los conectores, importadores y scripts no siempre pasan por el mismo camino que el back-office:

  • Si cambian campos con SQL directo, PrestaShop no se entera y no reindexa.
  • Algunos importadores desactivan a propósito la indexación y los hooks mientras importan, para ir más rápido, y dejan el índice para después.
  • Si el producto se crea desactivado y se activa más tarde por otra vía, puede quedar marcado como tratado sin estar en el índice.

El síntoma es el de este caso: el producto existe, se ve en su categoría, pero el buscador no lo encuentra hasta que alguien pulsa «reconstruir el índice».

La solución en el conector

Gustavo lo había probado en un módulo suyo de importación que tampoco indexaba. Tras crear o actualizar cada producto, una línea:

// Tras crear o actualizar el producto
Search::indexation(false, (int) $idProduct);

// Si lo desactivas o lo borras, quítalo del índice
Search::removeProductsSearchIndex([(int) $idProduct]);

Con el primer parámetro a false y un identificador, PrestaShop reindexa solo ese producto, aunque ya estuviera marcado como indexado. Es rápido y no bloquea la tienda.

El cron, como red de seguridad

En Parámetros de la tienda → Buscar tienes dos enlaces: añadir al índice los productos que faltan y reconstruir el índice completo. Debajo, PrestaShop te da una URL para programar en un cron; esa URL reconstruye el índice completo (lleva full=1). Sin ese parámetro, la misma llamada solo añade los que faltan.

  • Programa la de «productos que faltan» cada pocas horas. Solo trata lo pendiente.
  • La reconstrucción completa vacía y rehace el índice: en catálogos grandes tarda y carga la base de datos. Varios miembros la lanzan de madrugada, cuando no hay tráfico.

Si tienes que reconstruir el índice entero a menudo para que aparezcan productos, el problema está en el conector, no en el buscador: corrígelo allí.

Qué revisar si un producto concreto no sale

  1. Que esté activo y con visibilidad «en todas partes» o «búsqueda».
  2. Que esté asociado a la tienda correcta si usas multitienda.
  3. Que la palabra que buscas esté en un campo indexado (nombre, referencia, descripción, características…) y que tenga peso en Parámetros de la tienda → Buscar.
  4. Que la palabra no sea más corta que la longitud mínima configurada ni esté en la lista de palabras ignoradas.

Si el buscador nativo se te queda corto con un catálogo grande, nuestro buscador autoalojado trabaja sin cuotas mensuales.

Esto salió en @PrestashopEsp, la mayor comunidad PrestaShop de España en Telegram. Ver la conversación

Cargando...
Cookies
Volver arriba