# DataFirefly Advent Calendar: adventskalender voor PrestaShop

> Installatie Installeer de module via Modules > Modulebeheer > Een module uploaden met het ZIP-bestand, of kopieer de map dfadventcalendar naar de map /modules/ van uw winkel en klik op…

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

## Installatie

Installeer de module via **Modules > Modulebeheer > Een module uploaden** met het ZIP-bestand, of kopieer de map `dfadventcalendar` naar de map `/modules/` van uw winkel en klik op Installeren.

De installatie maakt de tabellen van de module aan, registreert de hooks en voegt het tabblad **Catalogus > Kortingen > Adventskalender** toe. Afbeeldingen die u voor vakjes uploadt, staan in `/img/dfadventcalendar/`, buiten de modulemap, zodat ze een update overleven.

## Module-instellingen en cronjob

De configuratiepagina van de module (knop Configureren in Modulebeheer) bevat drie instellingen en de cron-URL.

### Adres van de kalenderpagina

Laatste deel van de kalender-URL, gelijk voor alle talen (PrestaShop voegt het taalvoorvoegsel toe, bijvoorbeeld /en/). De standaardwaarde hangt af van de hoofdtaal van de winkel: `/adventskalender` in het Nederlands en Duits, `/advent-calendar` in het Engels. Vriendelijke URL's moeten in PrestaShop zijn ingeschakeld.

### Dagelijkse herinnering: cronjob

Herinneringsmails worden verstuurd via een cronjob. Kopieer de getoonde URL en plan hem elke 15 minuten in via het paneel van uw hosting, bijvoorbeeld:

```
*/15 * * * * curl -s "https://www.uw-winkel.nl/module/dfadventcalendar/cron?token=UW_TOKEN" > /dev/null
```

Bij elke aanroep verstuurt de module de herinneringen van de dag vanaf het uur dat op de kalender is ingesteld, in partijen (standaard 150, instelbaar via „Herinneringen per cronrun”). Elke deelnemer krijgt hooguit één herinnering per dag, en alleen als hij het vakje van vandaag nog niet heeft geopend. De datum van de laatste uitvoering staat onder de URL; „Nieuw crontoken aanmaken” maakt de oude URL ongeldig.

De kalender werkt zonder cron. Alleen de herinneringsmails hangen ervan af. Het dashboard toont een waarschuwing als de cron de afgelopen 24 uur niet is uitgevoerd.

## Een kalender aanmaken

Open **Catalogus > Kortingen > Adventskalender** en klik op **Nieuwe kalender**.

### Datums en vakjes

- **Datum van het eerste vakje**: vakje 1 gaat die dag om middernacht open, in de tijdzone van de winkel, daarna één vakje per dag.
- **Aantal vakjes**: 24 voor een klassieke kalender, 25 met eerste kerstdag, van 1 tot 31.
- **Openen van eerdere vakjes toestaan**: een deelnemer die een dag miste, kan het vakje inhalen tot het einde van de kalender.

Bij het opslaan maakt de module de lege vakjes aan. Ze blijven gesloten tot u ze instelt en activeert.

### Uiterlijk

Er zijn vijf stijlen: Dennenbos, Kraftpapier, Rijp, Winternacht en Zuurstok. **Eigen kleuren** ontgrendelt vier kleuren (achtergrond, tekst, vakjes, accent). U kunt een achtergrondafbeelding toevoegen (JPG, PNG of WebP, max. 5 MB), vallende sneeuw, gemengde vakjes en verschillende vakjesgroottes.

Met verschillende groottes bepaalt de module zelf welke vakjes breed of groot zijn, zodat het raster zich zonder gaten vult op 6, 4 of 3 kolommen, afhankelijk van het scherm. Het laatste vakje is altijd het grootste.

### Deelname

- **E-mail verplicht om de vakjes te openen**: uitgeschakeld openen bezoekers vrij, maar persoonlijke codes blijven voorbehouden aan ingeschreven deelnemers.
- **E-mailadres bevestigen** (double opt-in): de deelnemer klikt op een link in een e-mail voordat hij vakjes opent. Aanbevolen tegen nepadressen.
- **Vakje nieuwsbrief**: voegt een optioneel, niet aangevinkt vakje toe. De inschrijving loopt via de standaard klantnieuwsbrief of via de module ps_emailsubscription als die geïnstalleerd is.
- **Toestemmingstekst**: getoond naast het verplichte vakje. Voeg een link naar uw privacybeleid toe.

### Herinneringen

Schakel de **Dagelijkse herinneringsmail** in en kies het **Tijdstip van de herinnering**. De deelnemer kan herinneringen stopzetten op de kalenderpagina of via de link in elke e-mail.

### Banner op de homepage

De banner verschijnt tijdens de kalender op de homepage en desgewenst enkele dagen ervoor met een aftelling. Om hem elders in uw thema te tonen, voegt u `{hook h='displayDfAdventCalendar'}` toe aan een template.

## De vakjes instellen

Klik in het dashboard van de kalender op **Vakjes** en daarna bij elk vakje op Bewerken.

### Soorten vakjes

- **Bericht**: tekst en afbeelding.
- **Kortingscode**: de code staat centraal in het openingsvenster.
- **Onthuld product**: productkaart met prijs en winkelwagenknop. Zoek het product op naam of referentie.

Het veld **Teaser voor de herinneringsmail** is de zin die in de herinnering van de dag wordt verstuurd: maak nieuwsgierig zonder de verrassing te verklappen.

### Beloning

Korting in procent, korting in bedrag (incl. btw, standaardvaluta), gratis verzending of gratis product, met een optioneel minimaal bestelbedrag. Bij een productvakje beperkt „Korting alleen op het onthulde product toepassen” de code tot dat product.

### Soort code

- **Persoonlijke code**: bij het openen van het vakje wordt een winkelwagenregel voor eenmalig gebruik aangemaakt. Die is gekoppeld aan het klantaccount als dat bekend is, en geldig tot middernacht op de openingsdag plus de gekozen extra geldigheid.
- **Dezelfde code voor iedereen**: één winkelwagenregel per vakje, aangemaakt en gesynchroniseerd door de module. Laat het veld leeg voor een automatische code (prefix, jaartal en vakjesnummer, bijvoorbeeld `ADVENT26-07`) of vul uw eigen code in. De geldigheid telt vanaf de datum van het vakje.

Geen tijd om 24 vakjes in te stellen? In het dashboard past **Lege vakjes vullen** een kant-en-klaar plan toe: afwisselend 10 tot 20 procent korting en gratis verzending, 25 procent op het laatste vakje, persoonlijke codes een dag langer geldig. De teksten worden in alle talen van de winkel geschreven. Al ingestelde vakjes worden niet gewijzigd.

## Voorbeeld vóór de lancering

De knop **Voorbeeld** in het dashboard opent de kalender zoals hij er op een bepaalde dag uitziet, en het oogpictogram op elke regel opent direct het vakje van die dag. In het voorbeeld zijn de codes fictief en wordt niets opgeslagen. De pagina wordt niet geïndexeerd.

**Meer > Testmails naar mij sturen** verstuurt de drie e-mails (herinnering, welkom, bevestiging) naar de ingelogde medewerker, in zijn taal.

## Wat de klant ziet

- Een aftelling tot het volgende vakje en, voor deelnemers, een voortgangsbalk.
- Het vakje van vandaag uitgelicht. De vakjes gaan in 3D open, de eerste keer met confetti. Voor bezoekers die minder beweging vragen, zijn de animaties uitgeschakeld.
- Een knop **In mijn winkelwagen** onder elke code. Is de winkelwagen leeg, dan wordt de code 14 dagen bewaard en toegepast met het eerste toegevoegde product.
- Het overzicht **Uw codes** onder het raster, met de geldigheid en status van elke code (gebruikt, verlopen).
- Een deelknop voor de kalender en een link in het klantaccount.

Een al ingeschreven deelnemer die zijn adres opnieuw invult, krijgt een aanmeldlink per e-mail: de module meldt nooit iemand aan op basis van alleen een ingetypt adres.

## Eindtrekking

In de kalenderinstellingen bepaalt het veld **Eindtrekking** het minimumaantal geopende vakjes om mee te doen (0 schakelt de trekking uit), en **Prijs van de eindtrekking** beschrijft de prijs die op de kalender wordt getoond.

Het paneel Eindtrekking in het dashboard toont hoeveel deelnemers in aanmerking komen. **Winnaar trekken** kiest willekeurig uit de geschikte bevestigde deelnemers, met uitsluiting van eerdere winnaars. Elke trekking wordt vastgelegd met e-mailadres, geopende vakjes, aantal geschikte deelnemers en datum.

Een verloting valt onder de regels voor kansspelen en promotionele acties. Publiceer vóór de start een reglement in uw winkel.

## Dashboard en statistieken

Het dashboard toont deelnemers, bevestigde deelnemers, actieve herinneringen, nieuwsbriefinschrijvingen, bestellingen met een code en omzet exclusief btw. Per vakje: openingen, bestellingen en omzet. Deelnemers kunt u als CSV exporteren vanuit de lijst Deelnemers.

**Meer > Dupliceren voor volgend jaar** kopieert de kalender met vakjes, teksten en afbeeldingen, verschuift de datum een jaar en laat hem inactief, zonder deelnemers of codes.

Als Google Tag Manager aanwezig is, stuurt de module deze events naar de `dataLayer`: `dfadv_join`, `dfadv_door_open`, `dfadv_code_copy`, `dfadv_code_apply` en `dfadv_share`.

## E-mails

Drie sjablonen worden in acht talen meegeleverd in `mails/`: `dfadvent_reminder` (herinnering), `dfadvent_confirm` (bevestiging en aanmeldlink) en `dfadvent_welcome` (welkom). Om ze aan te passen zonder wijzigingen bij een update te verliezen, kopieert u ze naar `themes/uw-thema/modules/dfadventcalendar/mails/`.

## Persoonsgegevens

- Het toestemmingsvakje is verplicht, het nieuwsbriefvakje is apart en niet aangevinkt.
- Elke herinneringsmail bevat een uitschrijflink voor één klik.
- IP-adressen worden alleen gehasht opgeslagen, om inschrijvingen te beperken tot 5 per uur per verbinding.
- De module beantwoordt de verzoeken tot export en verwijdering van persoonsgegevens van PrestaShop.

## Problemen oplossen

### Herinneringen worden niet verstuurd

Controleer de datum van de laatste cronrun in de moduleconfiguratie, of de herinneringen op de kalender zijn ingeschakeld en of het tijdstip van de herinnering al voorbij is. Alleen bevestigde deelnemers die het vakje van vandaag nog niet openden, krijgen een herinnering. Test de verzending met „Testmails naar mij sturen”.

### De kalenderpagina geeft een 404-fout

Controleer of vriendelijke URL's zijn ingeschakeld en leeg de cache van PrestaShop. Botst het adres met een CMS-pagina of categorie, wijzig het dan in de moduleconfiguratie.

### De code komt niet in de winkelwagen

De getoonde melding komt van PrestaShop: minimaal bestelbedrag niet bereikt, code verlopen, of een persoonlijke code gekoppeld aan een klantaccount terwijl de klant is afgemeld. In dat laatste geval blijft de code in afwachting en wordt hij na het aanmelden in de volgende winkelwagen toegepast.

### Een vakje blijft op zijn dag gesloten

Vakjes gaan open om middernacht in de tijdzone van de winkel (Internationaal > Lokalisatie > Configuratie). Controleer ook of het vakje actief is: een niet ingesteld vakje blijft gesloten.

## Compatibiliteit

- PrestaShop 8.0 tot 9.x, één ZIP voor beide versies.
- Thema's Classic, Hummingbird en childthema's.
- Multistore en meertalig.
- Architectuur ModuleAdminController, zonder Composer-afhankelijkheden.
- Module vertaald in het Engels, Frans, Spaans, Duits, Italiaans, Nederlands, Pools en Portugees.
