SW Shopware 6 Gemiddeld

DfPreorder SW: complete gids

DfPreorder SW installeren, configureren en gebruiken: wachtlijst voor terugkerende voorraad met double opt-in volgens de AVG, detectie van nieuwe voorraad in realtime plus geplande scan, meertalige e-mails en pre-ordermodus voor Shopware 6.5, 6.6 en 6.7.

Bijgewerkt Moduleversie 1.0.0

Shopware biedt van huis uit geen functie “Waarschuw mij zodra dit weer op voorraad is”. DfPreorder SW vult dat gat: op elke productpagina zonder voorraad verschijnt automatisch een aanmeldformulier, en de klant ontvangt een e-mailwaarschuwing, in zijn eigen taal, zodra het product terug is. De plugin voegt ook een lichte pre-ordermodus toe (badge en verwachte verzenddatum) en een administratiemodule om de aanmeldingen op te volgen. Eén en dezelfde ZIP installeert op Shopware 6.5, 6.6 en 6.7. Deze gids behandelt de installatie, het compileren van de assets, de worker en de geplande taak, de configuratie, het gebruik in de storefront, de pre-ordermodus, de e-mails, de Store API, de AVG-conformiteit en de probleemoplossing.

Compatibel met Shopware 6.5.x, 6.6.x en 6.7.x op één codebase. Er worden geen Composer-afhankelijkheden toegevoegd. Anders dan sommige plugins die met een vooraf gecompileerde dist worden geleverd, bevat DfPreorder de JavaScript-broncode: na de installatie is een compilatie van de storefront en de administration nodig (zie hieronder).

Hoe de detectie van nieuwe voorraad werkt

DfPreorder detecteert bevoorradingen op twee complementaire manieren, die uitkomen op dezelfde idempotente verwerking, zodat uw klanten altijd worden gewaarschuwd, en nooit twee keer:

  • In realtime: een subscriber luistert naar het schrijven van producten en reageert zodra de voorraad of de beschikbare voorraad verandert.
  • Geplande scan: een geplande taak draait elke 15 minuten en haalt de voorraadwijzigingen in die rechtstreeks in SQL zijn uitgevoerd, typisch het verlagen van de beschikbare voorraad bij een bestelling of een ERP-import, die geen applicatie-event afvuren.

Het wachtlijstformulier verschijnt op een productpagina wanneer aan twee voorwaarden is voldaan: het product staat in de modus “uitverkocht verbergt de beschikbaarheid” (closeout) en de beschikbare voorraad is op nul gekomen.

Installatie

  1. Download het archief DfPreorder-v1.0.0.zip vanuit uw DataFirefly-account.
  2. Kopieer de uitgepakte map DfPreorder naar custom/plugins/, of installeer de ZIP via Administration → Extensies → Mijn extensies → Extensie uploaden.
  3. Installeer en activeer de plugin:
    bin/console plugin:refresh
    bin/console plugin:install --activate DfPreorder
  4. Compileer de assets van de storefront en de administration (onmisbare stap, er wordt geen dist meegeleverd):
    ./bin/build-storefront.sh
    ./bin/build-administration.sh
  5. Leeg de cache:
    bin/console cache:clear

Bij de installatie maakt de plugin de tabel df_stock_notification aan, de set aangepaste velden df_preorder op de productentiteit, twee e-mailsjablonen en de geplande taak. Bij het verwijderen zonder de gegevens te behouden, wordt alles gewist.

Worker en geplande taak

Om de e-mails daadwerkelijk te laten vertrekken, moeten twee mechanismen draaien, wat in productie meestal al het geval is via de admin-worker, systemd of cron:

  • De Messenger-worker, die het asynchrone bevoorradingsbericht verwerkt en de e-mails verstuurt;
  • De taakplanner, die elke 15 minuten de veiligheidsscan start.
bin/console messenger:consume async --time-limit=60
bin/console scheduled-task:run

Als noch de worker noch de planner draait, worden de aanmeldingen wel opgeslagen maar wordt er geen enkele e-mail verstuurd. Dat is oorzaak nummer één van “de plugin waarschuwt niemand”. Controleer de staat van de admin-worker onder Instellingen → Systeem → Wachtrij en die van de geplande taken onder Instellingen → Systeem → Geplande taken.

Configuratie

Open Extensies → Mijn extensies → DataFirefly Pre-order en Wachtlijst → ⋯ → Configureren. Alle opties zijn per verkoopkanaal in te stellen dankzij de native kanaalkiezer bovenaan de pagina.

  • Wachtlijst activeren: hoofdschakelaar. Toont het formulier op productpagina’s zonder voorraad.
  • Double opt-in: vereist een bevestiging per e-mail voordat de aanmelding actief wordt (aanbevolen voor de AVG). Standaard uitgeschakeld.
  • Gasten toestaan: als dit uitstaat, kunnen alleen ingelogde klanten zich aanmelden.
  • Aanmelding verwijderen na melding: gegevensminimalisatie, het e-mailadres wordt gewist zodra de waarschuwing is verstuurd. Staat dit uit, dan blijft de aanmelding bewaard met de status “gemeld”.
  • Meldingen per batch: maximaal aantal e-mails per uitvoering (worker of scan). Standaard 100.
  • Pre-orderbadge tonen: activeert de weergave van de badge en de verzenddatum op producten die als pre-order zijn ingesteld.

De wachtlijst in de storefront

Wanneer een product zonder voorraad is (closeout en beschikbare voorraad op nul), verschijnt het formulier “Waarschuw mij zodra dit weer op voorraad is” automatisch onder de koopknop. De klant vult zijn e-mailadres in (vooraf ingevuld als hij is ingelogd) en bevestigt.

  • Het verzenden gebeurt via AJAX met een volledige terugval zonder JavaScript (flashbericht en doorverwijzing).
  • Een onzichtbaar honeypot-veld filtert robots.
  • Staat double opt-in aan, dan wordt er een bevestigingsmail verstuurd; de aanmelding wordt pas actief na een klik op de bevestigingslink.
  • Elke e-mail kan een afmeldlink met één klik bevatten.

Het formulier wordt gerenderd in een overschrijfbaar template: views/storefront/component/df-waitlist/waitlist-form.html.twig, ingevoegd via het buy widget. Overschrijf het in uw thema om het uiterlijk of de plaats aan te passen.

Pre-ordermodus

De plugin maakt een groep aangepaste velden Pre-order aan op de productentiteit. Open een product onder Catalogi → Producten, tabblad Specificaties → Aangepaste velden, groep Pre-order:

  • Pre-order activeren: activeringsschakelaar voor dit product.
  • Verwachte verzenddatum: de datum die in de badge wordt getoond.
  • Pre-ordernotitie: vrije tekst die onder de badge verschijnt.

Wanneer de pre-order is geactiveerd en de badge in de configuratie is toegestaan, verschijnt er boven de koopknop een amberkleurige badge met de verwachte verzenddatum. De weergave zit apart in het template van het buy widget en blijft overschrijfbaar.

E-mails en vertalingen

Er worden bij de installatie twee e-mailsjablonen aangemaakt, vertaald in vijf talen: Frans, Engels, Duits, Spaans en Italiaans:

  • Terug op voorraad (df_preorder.back_in_stock): variabelen productName, productUrl en het volledige object product.
  • Bevestiging van de aanmelding (df_preorder.double_opt_in): voegt de variabele confirmUrl toe.

Elke klant wordt gewaarschuwd in de taal van de shop op het moment van zijn aanmelding: de plugin bouwt een eigen taalcontext voor de abonnee op om de vertaalde productnaam en het juiste sjabloon te bepalen. De URL van het product wordt bepaald via de canonieke SEO-URL van het betreffende kanaal en de betreffende taal.

De sjablonen blijven volledig bewerkbaar onder Instellingen → E-mails → E-mailsjablonen. Zoek op “terug op voorraad” of “back in stock” om ze terug te vinden.

Administratiemodule

Het menu Marketing → Wachtlijst en Pre-order toont alle aanmeldingen: e-mailadres, product, status (in afwachting / bevestigd / gemeld), aanmelddatum en meldingsdatum. Bulkverwijdering is beschikbaar, handig om oude aanmeldingen handmatig op te ruimen.

Store API (headless en mobiel)

Voor headless shops of mobiele applicaties biedt een Store API-endpoint de mogelijkheid een klant op de wachtlijst aan te melden:

POST /store-api/df-waitlist/subscribe
Content-Type: application/json
sw-access-key: <uw-toegangssleutel>

{
  "productId": "0189a1b2c3d4...",
  "email": "klant@example.com"
}

Een geldige aanvraag geeft een succesantwoord terug; een ongeldige product-id of een ongeldig e-mailadres geeft een 400-fout. Dezelfde configuratieregels gelden (double opt-in, gasten toestaan, enzovoort).

AVG-conformiteit

  • E-mailadressen worden uitsluitend voor de gevraagde melding verzameld.
  • De optionele double opt-in legt een expliciete toestemming vast.
  • Het standaardgedrag verwijdert het persoonsgegeven zodra de waarschuwing is verstuurd.
  • Er kan een afmeldlink met één klik in de e-mailsjablonen worden opgenomen.
  • Het verwijderen met wissen van de gegevens verwijdert de tabel, de sjablonen, de aangepaste velden en de configuratie.

Compatibiliteit 6.5 tot 6.7 en probleemoplossing

Het formulier verschijnt niet op een product zonder voorraad. Controleer of de optie “Wachtlijst activeren” is aangevinkt voor het juiste verkoopkanaal, of het product daadwerkelijk in de closeout-modus staat, en of de beschikbare voorraad op nul staat. Leeg de cache na elke wijziging van de configuratie.

De aanmeldingen worden opgeslagen maar er vertrekt geen e-mail. De Messenger-worker en/of de taakplanner draait niet. Start ze handmatig om te testen (zie het hoofdstuk Worker) en zorg daarna dat ze in productie continu draaien.

Fout in de maildienst bij de activering op Shopware 6.7. De abstracte klasse van de maildienst is in 6.7 vervangen door een concrete klasse. De plugin verwerkt dit verschil automatisch via een compiler pass die de juiste alias aanmaakt; een eenvoudige cache:clear compileert de container opnieuw als de fout na een update blijft bestaan.

De e-mail vertrekt in de verkeerde taal. De gekozen taal is die van het verkoopkanaal op het moment van de aanmelding. Controleer of het betreffende kanaal de verwachte taal heeft en of het e-mailsjabloon een vertaling voor die taal bevat.

Er lijken e-mails dubbel te vertrekken. Dat hoort niet te gebeuren: de verwerking is idempotent en markeert (of verwijdert) elke aanmelding na verzending. Ziet u het toch, controleer dan of u niet meerdere gelijktijdige workers draait zonder de juiste transportconfiguratie.

Wat gebeurt er bij het verwijderen? Met de optie om de gegevens te wissen worden de tabel df_stock_notification, de twee e-mailsjablonen, de veldenset df_preorder, de geplande taak en de configuratie verwijderd. Zonder die optie blijft alles bewaard voor een latere herinstallatie.

Was deze pagina nuttig?

Loopt u nog vast? Neem contact op met support