Sincronización Multi-Tienda — Guía de instalación y configuración
Instalar, conectar dos tiendas PrestaShop y configurar la sincronización del catálogo en modo push o pull, con cron y gestión de conflictos.
Esta guía cubre la instalación del módulo Sincronización Multi-Tienda, la conexión entre dos instalaciones PrestaShop y la configuración completa de la sincronización del catálogo.
Requisitos
- Dos instalaciones PrestaShop 8.0 a 9.x (las bases de datos y el alojamiento pueden ser distintos).
- La extensión PHP cURL activa en la tienda que dirige la sincronización.
- El webservice activado en la tienda remota, con una clave de acceso dedicada.
El módulo solo se instala en la tienda que dirige la sincronización. La tienda remota únicamente necesita su webservice activado — no hay que instalar ningún módulo en ella.
Instalación del módulo
- En el back-office de la tienda que dirige, abra Módulos > Gestor de módulos.
- Haga clic en Subir un módulo y envíe el archivo
dfmultisync.zip. - Una vez instalado, el módulo añade el menú Parámetros avanzados > DF Multi-Store Sync.
Activar el webservice en la tienda remota
En la tienda que se va a conectar:
- Abra Parámetros avanzados > Webservice.
- Ponga Activar el webservice de PrestaShop en Sí y guarde.
- Haga clic en Añadir nueva clave de webservice, genere una clave y luego conceda los permisos
GET,POST,PUTyDELETEsobre:categories,products,images,combinations,stock_availables,specific_priceselanguages. - Guarde y copie la clave generada.
Sin el permiso DELETE sobre specific_prices, la sincronización de precios específicos fallará: el módulo replica el conjunto remoto mediante borrado y recreación.
Añadir un sitio remoto
- Vaya a DF Multi-Store Sync > Sitios remotos y luego Añadir sitio remoto.
- Introduzca un nombre, la URL raíz de la tienda remota (p. ej.
https://tienda-b.ejemplo.com) y la clave de webservice copiada antes. - Guarde y haga clic en Test en la lista para verificar la conexión.
El botón Test consulta realmente el webservice remoto. Si falla, compruebe la URL (con el protocolo https://), la clave y que el webservice esté activado en el lado remoto.
Crear un perfil de sincronización
Un perfil describe qué sincronizar, en qué sentido y cómo arbitrar los conflictos.
Sentido: push o pull
- Push — la tienda actual es la fuente y envía sus datos al sitio remoto.
- Pull — el sitio remoto es la fuente; la tienda actual recibe sus datos.
Entidades
Seleccione las entidades a sincronizar. Siempre se procesan en este orden para respetar las dependencias: categorías → productos → stock → precios específicos.
Opciones
- Sincronizar imágenes — en push, se envían las nuevas imágenes locales; en pull, las imágenes se descargan al crear el producto.
- Sincronizar precios específicos — disponible solo en modo push.
- Tamaño de lote — número de entidades procesadas por ciclo (1 a 25). Redúzcalo si el servidor remoto es lento.
Estrategias de conflicto
Un conflicto ocurre cuando ambas tiendas han modificado la misma ficha desde la última sincronización. Hay cuatro estrategias disponibles:
- Gana la fuente — la fuente siempre sobrescribe el destino.
- Gana el destino — las entidades en conflicto se omiten.
- Gana el más reciente — se comparan las fechas de modificación.
- Manual — los conflictos se ponen en cola para su arbitraje.
Lanzar una primera sincronización
- Abra el Panel del módulo.
- En la fila del perfil, haga clic en Lanzar ahora.
- La sincronización se ejecuta por lotes: la barra de progreso muestra en directo el número de entidades creadas, actualizadas, omitidas, en conflicto y con error.
La sincronización trabaja dentro de un presupuesto de tiempo (25 segundos por defecto) y se reanuda automáticamente donde se detuvo. En un catálogo grande, varios ciclos se encadenan sin intervención.
Automatizar con el cron
- Active la opción Cron en los perfiles correspondientes.
- Copie la URL de cron mostrada en el panel (protegida por un token).
- Añádala a la crontab de su servidor, por ejemplo cada quince minutos:
*/15 * * * * wget -q -O /dev/null "https://su-tienda.com/module/dfmultisync/cron?token=SU_TOKEN"
El token de la URL de cron es confidencial: autoriza el disparo de las sincronizaciones. No lo comparta ni lo exponga públicamente.
Resolver los conflictos
Con la estrategia Manual, los conflictos se acumulan en la pestaña Conflictos. Para cada fila pendiente:
- Mantener local — fuerza el envío (push) de la versión local.
- Mantener remoto — fuerza la recuperación (pull) de la versión remota.
- Ignorar — marca el conflicto como tratado sin transferir nada.
Registros y seguimiento
La pestaña Logs conserva el historial de operaciones (información, advertencia, error), filtrable por nivel y por fecha. Los registros se purgan automáticamente tras 30 días.
Resolución de problemas
El test de conexión falla
Compruebe que el webservice esté activado en el lado remoto, que la clave sea correcta y que su perfil de permisos cubra los recursos indicados arriba. Asegúrese de que la URL incluya https://.
Algunos productos se omiten
El módulo empareja productos y combinaciones por referencia. Un producto sin referencia, o cuya referencia difiere entre las dos tiendas, no podrá emparejarse para el stock. Introduzca referencias coherentes.
Los precios específicos no se sincronizan
La sincronización de precios específicos es solo push y requiere el permiso DELETE sobre specific_prices en el lado remoto.
La sincronización parece lenta
Reduzca el tamaño de lote del perfil y deje que el cron encadene los ciclos. La primera pasada siempre es la más larga; las siguientes solo transfieren las entidades realmente modificadas.