PS PrestaShop Gemiddeld

Multi-winkelsynchronisatie: installatie- en configuratiegids

De module installeren, twee PrestaShop-winkels verbinden en de catalogussynchronisatie in push of pull instellen, met cron en conflictbeheer.

Bijgewerkt Moduleversie 1.0.0

Deze gids behandelt de installatie van de module Multi-winkelsynchronisatie, de verbinding tussen twee PrestaShop-installaties en de volledige configuratie van de catalogussynchronisatie.

Vereisten

  • Twee PrestaShop-installaties 8.0 tot 9.x (de databases en de hosting mogen verschillen).
  • De PHP-uitbreiding cURL actief op de winkel die de synchronisatie aanstuurt.
  • De webservice ingeschakeld op de externe winkel, met een eigen toegangssleutel.

De module installeert u alleen op de winkel die de synchronisatie aanstuurt. De externe winkel hoeft enkel haar webservice aan te hebben staan, en daar valt geen module te installeren.

De module installeren

  1. Open in de backoffice van de aansturende winkel Modules > Modulebeheer.
  2. Klik op Een module installeren en verstuur het bestand dfmultisync.zip.
  3. Na de installatie voegt de module het menu Geavanceerde parameters > DF Multi-Store Sync toe.

De webservice op de externe winkel inschakelen

Op de winkel die moet worden verbonden:

  1. Open Geavanceerde parameters > Webservice.
  2. Zet De webservice van PrestaShop inschakelen op Ja en sla op.
  3. Klik op Een nieuwe webservicesleutel toevoegen, maak een sleutel aan en geef daarna de rechten GET, POST, PUT en DELETE op de volgende bronnen: categories, products, images, combinations, stock_availables, specific_prices en languages.
  4. Sla op en kopieer de aangemaakte sleutel.

Zonder het recht DELETE op specific_prices mislukt de synchronisatie van de specifieke prijzen: de module vervangt het externe geheel door het te wissen en opnieuw aan te maken.

Een externe site toevoegen

  1. Ga naar DF Multi-Store Sync > Externe sites en klik op Een externe site toevoegen.
  2. Vul een naam in, de basis-URL van de externe winkel (bijvoorbeeld https://winkel-b.voorbeeld.nl) en de webservicesleutel die u hebt gekopieerd.
  3. Sla op en klik daarna in de lijst op Test om de verbinding te controleren.

De knop Test bevraagt werkelijk de externe webservice. Mislukt die, controleer dan de URL (met het protocol https://), de sleutel, en of de webservice aan de externe kant wel aanstaat.

Een synchronisatieprofiel maken

Een profiel beschrijft wat er wordt gesynchroniseerd, in welke richting en hoe conflicten worden beslecht.

Richting: push of pull

  • Push: de huidige winkel is de bron en stuurt haar gegevens naar de externe site.
  • Pull: de externe site is de bron, en de huidige winkel ontvangt haar gegevens.

Entiteiten

Kies de entiteiten die u wilt synchroniseren. Zij worden altijd in deze volgorde behandeld, om de afhankelijkheden te respecteren: categorieën, dan producten, dan voorraad, dan specifieke prijzen.

Opties

  • De afbeeldingen synchroniseren: in push vertrekken de nieuwe lokale afbeeldingen; in pull worden de afbeeldingen bij het aanmaken van het product opgehaald.
  • De specifieke prijzen synchroniseren: alleen in push beschikbaar.
  • Batchgrootte: het aantal entiteiten per cyclus (1 tot 25). Verlaag die als de externe server traag is.

Conflictstrategieën

Er ontstaat een conflict wanneer beide winkels dezelfde fiche hebben gewijzigd sinds de laatste synchronisatie. Er zijn vier strategieën:

  • De bron wint: de bron overschrijft altijd het doel.
  • Het doel wint: entiteiten in conflict worden overgeslagen.
  • De recentste wint: op basis van een vergelijking van de wijzigingsdatums.
  • Handmatig: de conflicten komen in een wachtrij om te beslissen.

Een eerste synchronisatie starten

  1. Open het Dashboard van de module.
  2. Klik op de regel van het profiel op Nu starten.
  3. De synchronisatie loopt in batches: de voortgangsbalk toont live hoeveel entiteiten er zijn aangemaakt, bijgewerkt, overgeslagen, in conflict of in fout.

De synchronisatie werkt binnen een tijdsbudget (standaard 25 seconden) en hervat automatisch waar zij is gestopt. Op een grote catalogus volgen er meerdere cycli na elkaar, zonder tussenkomst.

Automatiseren met de cron

  1. Schakel de optie Cron op de betrokken profielen in.
  2. Kopieer de cron-URL die op het dashboard staat (beveiligd met een token).
  3. Voeg die aan de crontab van uw server toe, bijvoorbeeld om het kwartier:
*/15 * * * * wget -q -O /dev/null "https://uw-winkel.nl/module/dfmultisync/cron?token=UW_TOKEN"

Het token in de cron-URL is vertrouwelijk: het geeft toestemming om synchronisaties te starten. Deel het niet en zet het niet publiek online.

Conflicten oplossen

Met de strategie Handmatig stapelen de conflicten zich op in het tabblad Conflicten. Voor elke wachtende regel:

  • Lokaal behouden: dwingt het versturen (push) van de lokale versie af.
  • Extern behouden: dwingt het ophalen (pull) van de externe versie af.
  • Overslaan: markeert het conflict als behandeld zonder iets over te dragen.

Logboeken en opvolging

Het tabblad Logboeken bewaart de historiek van de bewerkingen (informatie, waarschuwing, fout), te filteren op niveau en op datum. De logboeken worden na 30 dagen automatisch opgeruimd.

Problemen oplossen

De verbindingstest mislukt

Controleer of de webservice aan de externe kant aanstaat, of de sleutel juist is en of haar rechtenprofiel de hierboven genoemde bronnen wel dekt. Zorg dat de URL https:// bevat.

Er worden producten overgeslagen

De module koppelt producten en varianten op referentie. Een product zonder referentie, of met een referentie die tussen de twee winkels verschilt, kan voor de voorraad niet worden gekoppeld. Zorg voor samenhangende referenties.

De specifieke prijzen worden niet gesynchroniseerd

Die synchronisatie werkt alleen in push en vereist het recht DELETE op specific_prices aan de externe kant.

De synchronisatie lijkt traag

Verlaag de batchgrootte van het profiel en laat de cron de cycli na elkaar afwerken. De eerste doorloop duurt altijd het langst; de volgende dragen alleen de entiteiten over die werkelijk zijn gewijzigd.

Was deze pagina nuttig?

Loopt u nog vast? Neem contact op met support