Synchronisation Multi-Boutiques — Guide d’installation et de configuration
Installer, connecter deux boutiques PrestaShop et configurer la synchronisation du catalogue en mode push ou pull, avec cron et gestion des conflits.
Ce guide couvre l’installation du module Synchronisation Multi-Boutiques, la connexion entre deux installations PrestaShop et la configuration complète de la synchronisation du catalogue.
Prérequis
- Deux installations PrestaShop 8.0 à 9.x (bases et hébergements pouvant être distincts).
- L’extension PHP cURL active sur la boutique qui pilote la synchronisation.
- Le webservice activé sur la boutique distante, avec une clé d’accès dédiée.
Le module ne s’installe que sur la boutique qui pilote la synchronisation. La boutique distante n’a besoin que de son webservice activé — aucun module à y installer.
Installation du module
- Dans le back-office de la boutique pilote, ouvrez Modules > Gestionnaire de modules.
- Cliquez sur Installer un module et envoyez le fichier
dfmultisync.zip. - Une fois installé, le module ajoute le menu Paramètres avancés > DF Multi-Store Sync.
Activer le webservice sur la boutique distante
Sur la boutique qui doit être connectée :
- Ouvrez Paramètres avancés > Webservice.
- Passez Activer le webservice de PrestaShop sur Oui et enregistrez.
- Cliquez sur Ajouter une nouvelle clé de webservice, générez une clé, puis accordez les permissions
GET,POST,PUTetDELETEsur les ressources suivantes :categories,products,images,combinations,stock_availables,specific_pricesetlanguages. - Enregistrez et copiez la clé générée.
Sans les permissions DELETE sur specific_prices, la synchronisation des prix spécifiques échouera : le module remplace l’ensemble distant par suppression puis recréation.
Ajouter un site distant
- Rendez-vous dans DF Multi-Store Sync > Sites distants puis Ajouter un site distant.
- Renseignez un nom, l’URL racine de la boutique distante (ex.
https://boutique-b.exemple.com) et la clé webservice copiée précédemment. - Enregistrez, puis cliquez sur Test dans la liste pour vérifier la connexion.
Le bouton Test interroge réellement le webservice distant. S’il échoue, vérifiez l’URL (avec le protocole https://), la clé, et que le webservice est bien activé côté distant.
Créer un profil de synchronisation
Un profil décrit quoi synchroniser, dans quel sens et comment arbitrer les conflits.
Direction : push ou pull
- Push — la boutique courante est la source et envoie ses données vers le site distant.
- Pull — le site distant est la source ; la boutique courante reçoit ses données.
Entités
Sélectionnez les entités à synchroniser. Elles sont toujours traitées dans cet ordre pour respecter les dépendances : catégories → produits → stock → prix spécifiques.
Options
- Synchroniser les images — en push, les nouvelles images locales sont envoyées ; en pull, les images sont téléchargées à la création du produit.
- Synchroniser les prix spécifiques — disponible en push uniquement.
- Taille de lot — nombre d’entités traitées par cycle (1 à 25). Réduisez-la si le serveur distant est lent.
Stratégies de conflit
Un conflit survient lorsque les deux boutiques ont modifié la même fiche depuis la dernière synchronisation. Quatre stratégies sont disponibles :
- La source gagne — la source écrase systématiquement la cible.
- La cible gagne — les entités en conflit sont ignorées.
- Le plus récent gagne — comparaison des dates de modification.
- Manuel — les conflits sont mis en file d’attente pour arbitrage.
Lancer une première synchronisation
- Ouvrez le Tableau de bord du module.
- Sur la ligne du profil, cliquez sur Lancer maintenant.
- La synchronisation s’exécute par lots : la barre de progression affiche en direct le nombre d’entités créées, mises à jour, ignorées, en conflit et en erreur.
La synchronisation travaille dans un budget de temps (25 secondes par défaut) et reprend automatiquement là où elle s’est arrêtée. Sur un gros catalogue, plusieurs cycles s’enchaînent sans intervention.
Automatiser avec le cron
- Activez l’option Cron sur les profils concernés.
- Copiez l’URL de cron affichée sur le tableau de bord (sécurisée par un jeton).
- Ajoutez-la à la crontab de votre serveur, par exemple toutes les quinze minutes :
*/15 * * * * wget -q -O /dev/null "https://votre-boutique.com/module/dfmultisync/cron?token=VOTRE_JETON"
Le jeton de l’URL de cron est confidentiel : il autorise le déclenchement des synchronisations. Ne le partagez pas et ne l’exposez pas publiquement.
Résoudre les conflits
Avec la stratégie Manuel, les conflits s’accumulent dans l’onglet Conflits. Pour chaque ligne en attente :
- Garder local — force l’envoi (push) de la version locale.
- Garder distant — force la récupération (pull) de la version distante.
- Ignorer — marque le conflit comme traité sans rien transférer.
Journaux et suivi
L’onglet Logs conserve l’historique des opérations (information, avertissement, erreur), filtrable par niveau et par date. Les journaux sont purgés automatiquement après 30 jours.
Dépannage
Le test de connexion échoue
Vérifiez que le webservice est activé côté distant, que la clé est correcte et que son profil de permissions couvre bien les ressources listées plus haut. Assurez-vous que l’URL inclut https://.
Des produits sont ignorés
Le module apparie les produits et déclinaisons par référence. Un produit sans référence, ou dont la référence diffère entre les deux boutiques, ne pourra pas être apparié pour le stock. Renseignez des références cohérentes.
Les prix spécifiques ne se synchronisent pas
La synchronisation des prix spécifiques est push uniquement et nécessite la permission DELETE sur specific_prices côté distant.
La synchronisation semble lente
Réduisez la taille de lot du profil et laissez le cron enchaîner les cycles. Le premier passage est toujours le plus long ; les suivants ne transfèrent que les entités réellement modifiées.