# Flitsverkoop & Aftelklok: volledige gids

> Overzicht en vereisten Flitsverkoop verandert uw promoties in echte tijdgebonden flash sales. U programmeert een campagne op een datumvenster; de module past de korting automatisch toe via de native specifieke…

- Pagina: <https://www.datafirefly.com/nl/documentation/dfflashsale/>
- Taal: nl
- Bijgewerkt op: 2026-10-01
- Andere talen: [fr](https://www.datafirefly.com/documentation/dfflashsale/index.md), [en](https://www.datafirefly.com/en/documentation/dfflashsale/index.md), [es](https://www.datafirefly.com/es/documentation/dfflashsale/index.md), [de](https://www.datafirefly.com/de/documentation/dfflashsale/index.md), [it](https://www.datafirefly.com/it/documentation/dfflashsale/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfflashsale/index.md), [pt](https://www.datafirefly.com/pt/documentation/dfflashsale/index.md)
- Index: <https://www.datafirefly.com/nl/documentation/llms.txt>

## Overzicht en vereisten

Flitsverkoop verandert uw promoties in echte tijdgebonden flash sales. U programmeert een campagne op een datumvenster; de module past de korting automatisch toe via de native specifieke prijzen van PrestaShop en toont een aftelklok die op de servertijd is gesynchroniseerd. Het promotietarief geldt dus overal (productpagina, lijsten, winkelwagen en e-mails), zonder enige wijziging aan uw thema.

- Compatibel met PrestaShop 8.0 tot 9.x, Classic-thema en afgeleide thema's.
- PHP 7.4 tot 8.3.
- Multistore en meertalig (FR/EN/ES/DE/IT/PL/NL/PT).
- Geen CRON-taak vereist: het activeren en stoppen van de korting wordt gestuurd door de datums van de specifieke prijs.
- PrestaShop-conforme architectuur (ModuleAdminController, ObjectModel), PSR-4-autoloader zonder Composer-afhankelijkheid.

De korting wordt weggeschreven in een **specifieke prijs** waarvan het venster `from` / `to` overeenkomt met de campagnedatums. PrestaShop activeert en verwijdert haar zelfstandig, op de seconde nauwkeurig.

## Installatie

Installeer de module zoals elke andere PrestaShop-module:

1. Download het archief `dfflashsale.zip` vanuit uw klantaccount.
2. Ga in de back-office naar **Modules > Modulebeheer**.
3. Klik op **Een module installeren** en sleep het archief erin.
4. Beheer na de installatie uw campagnes via **Catalogus > Flitsverkopen**.

Bij de installatie maakt de module haar tabellen aan (campagnes, targeting, mapping van de specifieke prijzen), registreert ze haar weergavehooks en voegt ze het tabblad **Flitsverkopen** toe onder Catalogus.

## Algemene module-instellingen

De configuratiepagina (**Configureren** vanuit het modulebeheer) bundelt de globale instellingen, gemeenschappelijk voor alle campagnes:

- **Aftelklok synchroniseren op de server**: stemt de klok af op de servertijd (aanbevolen). Zie de aparte sectie.
- **Pagina-inhoud verschuiven (push body)**: voegt automatisch een marge toe zodat de sticky banner nooit de inhoud bedekt.
- **Banner tonen op mobiel**: toont of verbergt de banner op kleine schermen.
- **Z-index van de banner**: stapelniveau van de banner, te verhogen als een element van uw thema eroverheen komt.

## Een flitsverkoopcampagne aanmaken

Klik vanuit het tabblad **Catalogus > Flitsverkopen** op **Een campagne toevoegen**. Het formulier is georganiseerd in panelen.

### Algemeen

- **Naam**: interne identifier van de campagne (vrij te kiezen).
- **Actief**: activeert of pauzeert de campagne.
- **Begin-/einddatum**: activiteitsvenster. De korting en de aftelklok steunen op deze datums.
- **Prioriteit**: als meerdere campagnes hetzelfde product targeten, wint voor de weergave de campagne met de hoogste prioriteit.
- **Winkels**: selecteer in multistore de betrokken winkels.

### Korting

- **Kortingstype**: **Percentage** (bijv. -30%) of **Vast bedrag** (bijv. -15 €).
- **Waarde**: het percentage of het bedrag van de korting.
- **Valuta**: bij een korting in vast bedrag, de referentievaluta.
- **Belasting**: geeft aan of het vaste bedrag inclusief of exclusief btw is.

De korting wordt toegepast via de specifieke prijzen: ze combineert met de native prijsregels van PrestaShop volgens hun prioriteit, en is al zichtbaar in de winkelwagen.

### Targeting

Kies de reikwijdte van de campagne:

- **Hele catalogus**: de korting geldt voor alle producten.
- **Categorieën**: selecteer een of meerdere categorieën. De optie **Subcategorieën opnemen** breidt de korting uit tot de hele boomstructuur.
- **Producten**: zoek en selecteer specifieke producten (zoeken op naam, referentie of identifier).
- **Merken**: selecteer een of meerdere fabrikanten. Al hun producten worden automatisch opgenomen, ook die na het aanmaken van de campagne worden toegevoegd.

### Weergave

- **Banner met aftelklok**: toont de globale promotiebalk.
- **Positie van de banner**: boven- of onderaan de pagina.
- **Vaste banner (sticky)**: houdt de banner zichtbaar bij het scrollen.
- **Tonen op de productpagina's**: voegt een aftelblok toe onder de prijs.
- **Tonen op de homepage**: voegt een promotieblok toe op de startpagina.
- **Badge op de productvisuals**: toont de campagnenaam over de foto, in de lijsten en op de productpagina.
- **Teaser vóór de start**: toont een aftelklok "start over…" vóór de begindatum.
- **Aan het einde van de aftelklok**: het element verbergen of een eindbericht tonen.

### Uiterlijk en teksten

In het paneel **Uiterlijk** stelt u de achtergrondkleur, de tekstkleur en de accentkleur in, plus de link van de call-to-action-knop (CTA). Het paneel **Teksten** bundelt de vertaalbare labels: titel en ondertitel van de banner, knoptekst en eindbericht, in te voeren voor elke taal van de winkel.

## Hoe de planning werkt

Wanneer u een campagne opslaat, maakt de module de specifieke prijzen aan die bij de targeting horen: een globale specifieke prijs (product 0) voor "hele catalogus", of een specifieke prijs per product voor de targeting op categorieën en producten. Het geldigheidsvenster van elke specifieke prijs is afgestemd op de begin- en einddatum van de campagne.

PrestaShop activeert en deactiveert de korting dus zelfstandig, op de seconde, zonder geplande taak. De identifiers van de aangemaakte specifieke prijzen worden in een mappingtabel onthouden, zodat ze netjes worden verwijderd bij het wijzigen of verwijderen van de campagne of bij het deïnstalleren.

Bij targeting op categorieën met subcategorieën wordt de productlijst bij het opslaan opgelost door de boomstructuur te doorlopen (nleft / nright). Sla de campagne opnieuw op als u uw categorieën reorganiseert.

## De servergesynchroniseerde aftelklok

De aftelklok is afgestemd op de servertijd, niet op die van de bezoeker. Bij de weergave stuurt de module de servertijdstempel en de einddatum mee; het script berekent een verschil tussen de servertijd en de lokale tijd, en telt vervolgens lokaal af op basis van dat verschil.

Resultaat: een bezoeker die de klok van zijn computer vooruit- of terugzet, vervalst de timer niet. Er is geen herhaald netwerkverzoek nodig, het aftellen blijft vloeiend en correct voor iedereen.

U kunt de serversynchronisatie uitschakelen in de algemene instellingen; de aftelklok baseert zich dan op de lokale tijd van de browser.

## De badge op de productvisuals

De optie **Badge op de productvisuals** toont de naam van de promotie direct op de productafbeelding, zowel in de categorielijsten als op de productpagina. Het is het juiste middel om een benoemde actie visueel aan te kondigen, bijvoorbeeld BLACK FRIDAY.

Het label voert u in via het paneel **Teksten**, veld **Tekst van de productbadge**, voor elke taal. Blijft het leeg, dan neemt de module de titel van de banner over. De kleur van de badge is de accentkleur van de campagne.

Technisch wordt de badge toegevoegd aan de native _flags_ van PrestaShop, dezelfde die al de labels "Nieuw" of "-30%" tonen. Hij wordt dus gepositioneerd en gestyled door uw thema, zonder template-override.

De badge verschijnt alleen tijdens de actieve periode van de campagne. In teasermodus, vóór de begindatum, blijft hij verborgen om geen korting aan te kondigen die nog niet wordt toegepast.

## Weergavegebied en grootte van de banner

Sinds versie 1.2.0 bepalen twee instellingen in het paneel **Weergave** waar de banner verschijnt en hoeveel ruimte hij inneemt. U stelt ze per campagne in.

### Banner weergeven op

- **Volledige website**: de banner verschijnt op alle pagina's. Dit is de standaardwaarde, die ook geldt voor campagnes die vóór 1.2.0 zijn aangemaakt.
- **Pagina's die onder de actie vallen**: productpagina's van de geselecteerde producten en pagina's van de geselecteerde categorieën of merken. Een campagne op de hele catalogus blijft overal zichtbaar.
- **Alleen productpagina's van actieproducten**: de banner verschijnt alleen op de pagina van een product dat onder de campagne valt.

Op een pagina waar de campagne met de hoogste prioriteit niet is toegestaan, gaat de module door naar de volgende campagne op prioriteit. Zo kunt u een banner voorbehouden aan één merk en op de rest van de website een algemene banner tonen.

Bij een campagne op producten blijft het gebied "Pagina's die onder de actie vallen" beperkt tot de productpagina's van die producten: categoriepagina's waarin ze staan, tonen de banner niet.

### Grootte van de banner

- **Standaard**: titel, ondertitel en aftelklok met labels (Dagen, Uren, Min, Sec). Ongeveer 56 px hoog op desktop.
- **Compact**: aftelklok zonder labels in het formaat `2d 14:05:33`. Ongeveer 35 px op desktop en 55 px op mobiel, tegenover 128 px in Standaard.
- **Mini (één regel)**: balk van één regel van ongeveer 26 px, ondertitel verborgen en titel ingekort als de ruimte ontbreekt. Het meest discrete formaat op mobiel.

In Compact en Mini verdwijnt de eenheid dagen zodra er minder dan 24 uur overblijft.

## De evergreen-modus

De **evergreen**-modus verandert de campagne in een individuele, doorlopende timer: elke bezoeker krijgt zijn eigen deadline, gestart bij zijn eerste bezoek en gebaseerd op een door u gedefinieerde duur in minuten. De deadline wordt lokaal bewaard (localStorage) om coherent te blijven tussen pagina's en bezoeken.

In evergreen-modus is de aftelklok eigen aan elke bezoeker en komt ze niet overeen met het werkelijke kortingsvenster. Gebruik haar voor gepersonaliseerde urgentieberichten in plaats van voor het aankondigen van een gemeenschappelijk promotie-einde.

## Meertalig en multistore

Alle labels (titel, ondertitel, knop, eindbericht) zijn per taal vertaalbaar. In multistore kan elke campagne tot bepaalde winkels worden beperkt, en de specifieke prijzen worden per winkel aangemaakt. Eenzelfde campagne kan zo één specifieke winkel targeten zonder de andere te beïnvloeden.

## FAQ en probleemoplossing

### De korting wordt niet toegepast

Controleer of de campagne **actief** is, of de datum van vandaag binnen de begin- en einddatum valt, en of ze de huidige winkel betreft. Controleer bij targeting op categorieën of u de campagne opnieuw hebt opgeslagen na elke reorganisatie van de boomstructuur.

### De banner bedekt mijn menu of mijn inhoud

Schakel de optie **Pagina-inhoud verschuiven (push body)** in de algemene instellingen in. Komt een element van uw thema boven de banner uit, verhoog dan de waarde van de **z-index**.

### De aftelklok toont een incoherente tijd

Controleer of de tijd van uw server correct is en of de serversynchronisatie-optie actief is. De timer stemt zich af op de servertijd, onafhankelijk van de klok van de bezoeker.

### Meerdere campagnes targeten hetzelfde product

De weergave houdt de campagne met de hoogste **prioriteit** aan. Aan kortingszijde geldt de prioriteitslogica van de specifieke prijzen van PrestaShop.

### De badge verschijnt niet op de foto's

Controleer eerst of de optie **Badge op de productvisuals** op de campagne is ingeschakeld en of de begindatum voorbij is. Blijft de badge afwezig na het legen van de cache, open dan de configuratiepagina van de module of het tabblad **Catalogus > Flitsverkopen**: de module controleert dan haar hooks en registreert de ontbrekende opnieuw. Dit geval doet zich voor na een update door eenvoudige bestandsvervanging, die het updatescript niet uitvoert.

### Wat gebeurt er bij het deïnstalleren?

Het deïnstalleren verwijdert alle door de module aangemaakte specifieke prijzen via haar mappingtabel, verwijdert haar hooks en haar tabblad, en schoont haar tabellen op. Uw oorspronkelijke prijzen worden volledig hersteld.
