Internationaal landnummer telefoon (dfphoneintl)
Installatie, configuratie en E.164-normalisatieregels van de module voor internationale landnummers met vlag voor PrestaShop 8 en 9.
Presentatie
DataFirefly International Phone Input (dfphoneintl) voegt een landnummerkiezer met vlag toe aan de velden Telefoon en Mobiele telefoon van PrestaShop, en uniformiseert de nummers naar het internationale E.164-formaat in de database. De module werkt op twee niveaus: in de browser voor de gebruikservaring, en aan de serverzijde om te garanderen dat elke invoeging of wijziging van een adres, ook via de API, de backoffice of een import, een genormaliseerd nummer oplevert.
Opslagformaat: voert een Franse klant 0633547864 in, dan wordt in de database +33633547864 bewaard: het landnummer, zonder de beginnende 0 (de trunk prefix) en zonder spaties of scheidingstekens.
Vereisten
- PrestaShop 8.0.0 tot 9.99.99
- PHP 7.4 minimum (8.1+ aanbevolen)
- Geen enkele externe afhankelijkheid: de module bevat geen bibliotheken van derden
Installatie
- Download het archief
dfphoneintl-1.0.0.zipvanuit uw DataFirefly-klantenaccount. - Ga in de PrestaShop-backoffice naar Modules → Modulebeheer → Een module installeren.
- Sleep het ZIP-bestand erin en klik op Installeren.
- De module registreert zichzelf automatisch op de nodige hooks. Er wordt geen enkele SQL-tabel aangemaakt: de module leest de landnummers uit de native tabel
ps_country.
Configuratie
Ga naar Modules → Modulebeheer → DataFirefly International Phone Input → Configureren. Er zijn drie instellingen:
- Activeren op het veld “Telefoon”: schakelt de kiezer en de normalisatie op het veld
phonein of uit. - Activeren op het veld “Mobiele telefoon”: hetzelfde voor het veld
phone_mobile. - Voorkeurslanden: een lijst met ISO2-codes gescheiden door komma’s (bijvoorbeeld
nl,be,fr,lu,de,gb,us). Die landen staan bovenaan de keuzelijst vastgezet. Standaardwaarde:fr,be,lu,ch,gb,us,de,es,it,nl.
De landenlijst in de kiezer komt uit de landen die in uw winkel geactiveerd zijn (Verzending → Geografische zones → Landen). Een land dat uitgeschakeld is of waarvoor de kolom call_prefix niet is ingevuld, verschijnt niet.
Werking aan de clientzijde
Betrokken pagina’s
De kiezer verschijnt op alle frontendpagina’s met telefoonvelden: het aanmaken van een account, de registratie, het adresbeheer, het bestelproces (in 5 stappen en als one-page checkout), de identiteitspagina, de contactpagina en het opvolgen van een bestelling als gast.
Synchronisatie met het land
Wanneer de klant het land in het adresformulier wijzigt, werkt het landnummer in de kiezer zich automatisch bij. België kiezen zet het landnummer op +32, Duitsland op +49 enzovoort. Die synchronisatie werkt ook bij het herladen van de native checkout via AJAX: de module luistert naar de PrestaShop-events updatedAddressForm, updatedAddress, updateCustomerAddressForm en changedCheckoutStep, met een MutationObserver met debounce als vangnet voor sterk aangepaste thema’s.
Herkenning op bestaande adressen
Bevat het veld al een nummer in internationaal formaat (bij het bewerken van een bestaand adres), dan herkent de module het bijbehorende land via de langste overeenkomende landcode (longest dial-code match): +1242... wordt als de Bahama’s herkend en niet als de Verenigde Staten.
Werking aan de serverzijde
De normalisatie aan de serverzijde hangt aan de hooks actionObjectAddressAddBefore en actionObjectAddressUpdateBefore. Vóór elke INSERT of UPDATE op de tabel ps_address gaan de velden phone en phone_mobile door de klasse DfPhoneFormatter. Dat dekt alle schrijfkanalen: formulieren aan de frontend, de backoffice, de webservice, CSV-imports en modules van derden die de klasse Address manipuleren.
Normalisatieregels
Voor een adres dat aan een land met landnummer +33 hangt:
- Een nummer dat met
+begint blijft ongewijzigd, alleen de scheidingstekens verdwijnen:+33 6 33 54 78 64wordt+33633547864. - Bij een nummer dat met
00begint, wordt de00door+vervangen:0033633547864wordt+33633547864. - Bij een nummer dat met
0begint (de trunk prefix) verdwijnt die0en komt het landnummer ervoor:0633547864wordt+33633547864. - Bij een nummer dat al met het landnummer begint maar zonder
+, wordt de+gewoon toegevoegd:33633547864wordt+33633547864. - Bij elk ander nummer dat alleen uit cijfers bestaat, wordt het landnummer ervoor geplaatst.
Bestaande adressen worden bij de installatie niet met terugwerkende kracht gewijzigd. De normalisatie geldt vanaf de volgende keer dat elk adres wordt opgeslagen. Voor een normalisatie van de bestaande gegevens in bulk kunt u contact opnemen met de support: een SQL-script met dezelfde logica is op aanvraag beschikbaar.
Compatibiliteit met thema’s en checkout
- Het Classic-thema van PS 8 (Bootstrap 4) en het thema van PS 9 (Bootstrap 5) worden native ondersteund.
- De checkout in 5 stappen en de one-page checkout (OPC) worden ondersteund.
- De vlaggen zijn Unicode-emoji’s (Regional Indicator Symbols): geen sprite en geen CDN, met native weergave door alle moderne browsers en besturingssystemen.
- Multistore: globale instellingen, met een landenlijst die per winkel wordt gefilterd.
- Meertalig: de landnamen verschijnen in de taal van de bezoeker.
Probleemoplossing
De kiezer verschijnt niet
- Controleer of het veld in de configuratie van de module geactiveerd is.
- Controleer of uw thema wel degelijk de standaard veldnamen
phoneenphone_mobilegebruikt (ofaddress[phone]enaddress[phone_mobile]). Is een veld door een maatwerkthema hernoemd, neem dan contact op met de support. - Leeg na de installatie de PrestaShop-cache (Geavanceerde instellingen → Prestaties).
De vlaggen verschijnen als letters (FR, BE enzovoort)
Dat is verwacht gedrag op sommige oudere Windows-systemen die vlagemoji’s niet renderen. Het landnummer +33 blijft zichtbaar en de module blijft volledig bruikbaar.
Het landnummer volgt de landwijziging niet
Bij een sterk aangepast thema waarvan de landkeuzelijst de naam id_country niet gebruikt, kan de automatische synchronisatie zich niet vasthaken. De MutationObserver initialiseert de widget wel opnieuw, en de klant kan zijn landnummer handmatig kiezen. Neem contact op met de support met de URL van uw webshop voor een aanpassing.
Verwijdering
Bij het verwijderen worden de drie configuratiesleutels van de module gewist. De nummers die al in de database genormaliseerd zijn, blijven in internationaal formaat staan: er worden geen klantgegevens gewijzigd of verwijderd.
Support
Support per e-mail inbegrepen, updates 12 maanden inbegrepen. Op alle DataFirefly-modules geldt een niet-goed-geld-terug-garantie van 14 dagen.