GuideAdresser
Adresseforslag i PrestaShop-checkout
PrestaShop har ikke et felt i admin til egne scripts, men alle temaer bygget på Classic har en tom fil, der er beregnet til netop det: custom.js. Den indlæses sidst på hver side, også i checkouten, og det er nok til at sætte adressefeltet på adressetrinnet.
Kaldet i guiden
På denne side6 trin
Opret en offentlig nøgle
Feltet kalder Grundfast direkte fra kundens browser, så det bruger en offentlig nøgle (gf_pub_live_). Den må gerne stå i sidens kildekode, fordi den kun virker fra de domæner, du skriver på den, og kun til adresseopslag. Opret den under Nøgler i dashboardet: vælg Offentlig og skriv dine domæner, fx butik.dk og www.butik.dk.
Byg og test med en offentlig testnøgle (gf_pub_test_), som aldrig faktureres, og skift til live-nøglen, når feltet virker. Reglerne for domæner — www, underdomæner med *. og porte — står i dokumentationen for adressefeltet.
Felterne på adressetrinnet
Adressetrinnet i checkouten bruger den samme adresseformular som kundens konto. I Classic-temaet får hvert felt id’et field- plus feltets navn, og navnene er PrestaShops egne:
| Felt | Navn | Id i Classic |
|---|---|---|
| Adresse | address1 | field-address1 |
| Postnummer | postcode | field-postcode |
| By | city | field-city |
Brug navnet frem for id’et i selektoren — så virker det også i temaer, der ikke bygger på Classic, så længe de bruger PrestaShops standardfelter.
Læg scriptet i custom.js
Åbn themes/<dit-tema>/assets/js/custom.js (via FTP eller dit deploy) og indsæt nedenstående. Det opretter script-tagget med de samme indstillinger, som du ellers ville skrive i HTML:
(function () {
var s = document.createElement('script');
s.src = 'https://grundfast.dk/widget/v1/grundfast-adresse.js';
s.dataset.key = 'gf_pub_live_...';
s.dataset.felt = 'input[name="address1"]';
s.dataset.postnr = 'input[name="postcode"]';
s.dataset.by = 'input[name="city"]';
document.head.appendChild(s);
})();Tøm derefter cachen under Advanced Parameters → Performance → Clear cache, især hvis du har slået sammenlægning af JavaScript (CCC) til — ellers serveres den gamle, samlede fil.
Opdatering af temaet
custom.js. Brug et child-tema eller en kopi af temaet, og læg filen dér.Hvad der sker i checkouten
- Kunden skriver i Adresse og får forslag fra to tegn. Har bygningen lejligheder, kommer etage og dør som et ekstra trin.
- Adresse får gade, husnummer og evt. etage og dør; Postnummer og By udfyldes. Feltet skriver dem, som om kunden havde tastet, så PrestaShops egen validering kører som normalt.
- Når kunden skifter land eller tilføjer en ny adresse, tegner PrestaShop formularen igen. Feltet hægter sig på det nye inputfelt af sig selv.
- Det samme gælder faktureringsadressen, hvis kunden vælger en anden adresse til faktura — den bruger de samme feltnavne i sin egen formular.
Tjek nøglen fra en terminal
Før du leder i platformens indstillinger, kan du se, om nøglen og domænet passer sammen. Kaldet nedenfor er det samme, feltet laver. Origin er dit domæne, præcis som browseren skriver det:
curl -G "https://api.grundfast.dk/v1/adresse/search" \
--data-urlencode "q=Vestergade 10" \
--data-urlencode "token=$GRUNDFAST_PUBLIC_KEY" \
-H "Origin: https://www.butik.dk"Svarer det med adresser, er nøglen i orden. Et 403 med origin … is not allowed betyder, at domænet ikke står på nøglen — ret listen i dashboardet; det slår igennem inden for et halvt minut.
Hvis der ikke kommer forslag
- Åbn browserens konsol (F12, fanen Console). Feltet skriver én linje, der begynder med
[grundfast-adresse], med årsagen fra API’et. no public key— scriptet blev indlæst udendata-key.- Ingen linje og ingen liste — feltet blev ikke fundet. Tjek at selektoren i
data-feltrammer feltet: skrivdocument.querySelectorAll('…')med den samme selektor i konsollen. - Listen vises, men felterne udfyldes ikke — selektorerne i
data-postnrogdata-byrammer ikke noget. De slås op i samme formular som adressefeltet først, derefter på hele siden.
Feltet stopper aldrig formularen: fejler et kald, lukker listen, og kunden kan skrive adressen i hånden som før.
Var denne side nyttig?
Ofte stillede spørgsmål
Nej. custom.js er beregnet til egne scripts og indlæses på alle sider. Et modul giver først mening, hvis du vil styre nøglen fra admin eller kun indlæse filen i checkouten.
Ja, PrestaShop understøtter eksterne filer i theme.yml med server: remote. Men nøglen og selektorerne skal stå som data-attributter på tagget, og dem kan theme.yml ikke sætte. Derfor er custom.js den enkleste vej.
Selektorerne bruger feltnavnene address1, postcode og city, som er PrestaShops egne. Så længe temaet bruger standardformularen, virker de. Har dit tema sine egne felter, så find dem med browserens inspektør og ret selektorerne.
De kan vaskes mod adresseregistret med datavask-endpointet, som giver de bedste kandidater og en sikkerhed pr. adresse. Det kræver en hemmelig nøgle og sker fra en server, ikke fra butikken.
Prøv det på rigtige data
Gratis op til 5.000 kald/md · intet kreditkort · data fra Klimadatastyrelsen/Datafordeler, CC BY 4.0
Relateret