SW Shopware 6 Beginner

Winkelwagenteller Shopware 6: installatie en configuratie

De badge "In meer dan 20 winkelwagens" installeren, de index vullen en configureren op Shopware 6.5, 6.6 en 6.7.

Bijgewerkt Moduleversie 1.0.0

De plugin DfCartPopularity toont op de productpagina een badge met het aantal winkelwagens dat het product op dit moment bevat, bijvoorbeeld “In meer dan 20 winkelwagens”. De telling is gebaseerd op uw echte winkelwagengegevens.

Vereisten

  • Shopware 6.5, 6.6 of 6.7 in een zelfgehoste installatie (de SaaS-omgeving Shopware Cloud accepteert geen serverplugins)
  • PHP 8.1 of hoger
  • SSH-toegang voor de consolecommando’s en het compileren van het thema

Installatie

Upload de ZIP via Extensies en vervolgens Mijn extensies, of kopieer de map naar custom/plugins/, en voer daarna uit:

bin/console plugin:refresh
bin/console plugin:install --activate DfCartPopularity
bin/console cache:clear
./bin/build-storefront.sh

Het compileren van de storefront is eenmalig nodig om de stylesheet van de badge op te nemen. In een omgeving die door een deploymentpipeline wordt aangestuurd, maakt deze stap meestal al deel uit van het standaardproces.

De index vullen

Bij installatie is de index leeg: de tellers beginnen op nul en vullen zich naarmate klanten hun winkelwagen wijzigen. Om vanaf dag één geloofwaardige cijfers te tonen, start u de heropbouw:

bin/console df:cart-popularity:rebuild

Het commando leest de winkelwagens die al in de shop zijn opgeslagen en vult daarmee de index. Het is idempotent en kan zonder risico opnieuw worden uitgevoerd. De optie --truncate leegt de index vóór de heropbouw.

Winkelwagens die al zijn omgezet in een bestelling worden door Shopware uit de winkelwagentabel verwijderd. De heropbouw ziet dus alleen actieve winkelwagens, precies het beoogde bereik.

Configuratie

Instellingen, Systeem, Plugins, DataFirefly Cart Popularity, en dan Configureren. Elke optie is per verkoopkanaal te overschrijven.

Weergave

  • Badge activeren: het bijhouden van winkelwagens gaat door ook als de badge uitgeschakeld is, zodat de gegevens klaarstaan op het moment dat u hem activeert.
  • Minimale drempel (standaard 5): onder dit aantal winkelwagens wordt niets getoond.
  • Weergavemodus: afgerond niveau of exact aantal.
  • Stapgrootte van het niveau (standaard 10): een telling van 23 wordt getoond als “meer dan 20”. Ligt de telling onder de stapgrootte, dan schakelt de plugin automatisch over op het exacte aantal in plaats van een onjuist niveau te tonen.
  • Positie: boven of onder het koopblok.
  • Stijl van de badge: lichte achtergrond, omlijning of platte tekst.

Telregels

  • Tijdvenster (standaard 7 dagen): alleen winkelwagens die binnen dit venster zijn bijgewerkt, worden meegeteld. De waarde 0 schakelt het venster uit.
  • Alleen actieve winkelwagens: sluit winkelwagens uit die al zijn omgezet in een bestelling.
  • Beperken tot het verkoopkanaal: voorkomt dat een piek in de ene shop de teller van een andere shop opdrijft.
  • Varianten samenvoegen: alle varianten van een product delen de teller van het hoofdproduct. Schakel deze optie uit als elke variant een eigen teller moet hebben.

Prestaties en bewaartermijn

  • Levensduur van de cache (standaard 900 seconden): de telquery wordt slechts één keer per levensduur en per product uitgevoerd. De waarde 0 schakelt de cache uit. De cache wordt automatisch geleegd bij elke opslag van de configuratie.
  • Bewaartermijn (standaard 60 dagen): oudere records worden verwijderd. De opschoning draait automatisch, maximaal één keer per uur, zonder afhankelijkheid van de message queue.

De tekst aanpassen

Het label van de badge staat in de Shopware-snippets. Ga naar Instellingen, Snippets en zoek op dfCartPopularity. Er zijn drie sleutels beschikbaar:

  • dfCartPopularity.badge.textTier: niveaumodus, bevat de placeholder van het aantal
  • dfCartPopularity.badge.textExact: exacte modus, bevat de placeholder van het aantal
  • dfCartPopularity.badge.textSingular: exacte modus met één enkele winkelwagen

De placeholder wordt geschreven als %count% en moet in uw formulering behouden blijven. De Engelse, Duitse, Franse, Spaanse, Italiaanse en Poolse vertalingen worden meegeleverd.

Hoe de telling werkt

Shopware serialiseert de volledige winkelwagen in een payloadkolom van de tabel cart, vaak gecomprimeerd. Geen enkele SQL-query kan dus weten wat een winkelwagen bevat zonder deze te deserialiseren. De plugin onderhoudt een eigen tabel df_cart_popularity die een winkelwagentoken, een product, een verkoopkanaal, een hoeveelheid en een besteldindicator aan elkaar koppelt.

Deze tabel wordt bij elke opslag van een winkelwagen gesynchroniseerd via CartSavedEvent, in twee geïndexeerde queries. Het event CartConvertedEvent markeert de regels als besteld op het moment van de bestelling. De weergave voert vervolgens een eenvoudige distinct-telling uit op een samengestelde index, met caching.

Er worden geen persoonsgegevens opgeslagen: de index bevat alleen het winkelwagentoken, een pseudonieme technische identificatie, de productreferentie, het verkoopkanaal en tijdstempels.

CLI-commando’s

bin/console df:cart-popularity:rebuild
bin/console df:cart-popularity:rebuild --truncate
bin/console df:cart-popularity:cleanup
bin/console df:cart-popularity:cleanup --days=30

Probleemoplossing

De badge verschijnt niet

Controleer in deze volgorde: de badge is geactiveerd voor het betreffende verkoopkanaal, het aantal winkelwagens haalt de drempel, het tijdvenster sluit niet alle winkelwagens uit, en de storefront is na de installatie daadwerkelijk opnieuw gecompileerd. Leeg ook de HTTP-cache als de pagina vanuit de cache wordt geserveerd.

De badge verschijnt zonder opmaak

De stylesheet van de plugin wordt meegenomen in de compilatie van het thema. Voer ./bin/build-storefront.sh of bin/console theme:compile opnieuw uit.

Het heropbouwcommando meldt overgeslagen winkelwagens

Deze winkelwagens gebruiken een payloadformaat dat het commando niet kan lezen, doorgaans een externe winkelwagenopslag. Ze worden normaal geïndexeerd zodra de klant ze de volgende keer wijzigt, want het volgen via events werkt onafhankelijk van de opslagmethode.

Verwijderen

Bij verwijderen met wissen van de gebruikersgegevens worden de tabel df_cart_popularity en de configuratie van de plugin verwijderd. Met behoud van de gebruikersgegevens blijft de tabel bestaan en hervatten de tellers ongewijzigd bij een herinstallatie.

Was deze pagina nuttig?

Loopt u nog vast? Neem contact op met support