Geolokácia v PrestaShope: aktuálna GeoIP databáza automaticky

Geolokácia v PrestaShope a aktualizácia databázy GeoIP

Predávate aj do zahraničia? Potom sa vám hodí, aby obchod vedel, odkiaľ návštevník prichádza. Práve na to slúži geolokácia PrestaShop, ktorá podľa IP adresy zistí krajinu návštevníka a podľa nej mu môže ukázať správny jazyk, menu alebo obmedziť predaj do niektorých krajín. Funguje však len vtedy, keď má obchod aktuálnu databázu IP adries. A tú PrestaShop sám neaktualizuje. V tomto článku vysvetlím, ako geolokácia funguje, prečo stará databáza škodí a ako ju udržať aktuálnu automaticky.

Čo je geolokácia v PrestaShope

PrestaShop má zabudovanú funkciu geolokácie, ktorú nájdete v administrácii v časti Medzinárodné › Lokalizácia › Geolokácia. Podľa IP adresy návštevníka určí jeho krajinu a podľa nastavení môže:

  • návštevníkovi predvoliť jazyk a menu jeho krajiny,
  • obmedziť nákup alebo zobrazenie obchodu len na vybrané krajiny,
  • povoliť niektorým krajinám len prezeranie katalógu bez možnosti objednať.

Na zistenie krajiny používa PrestaShop databázu GeoLite2 City od spoločnosti MaxMind. Je to súbor, ktorý priraďuje rozsahy IP adries ku krajinám a mestám.

Prečo nestačí databázu raz nahrať

IP adresy sa medzi poskytovateľmi a krajinami neustále presúvajú. MaxMind preto databázu GeoLite2 pravidelne aktualizuje, dvakrát týždenne. PrestaShop si ju však sám nestiahne. Databáza, ktorú ste nahrali pri spustení obchodu, je po mesiacoch čoraz menej presná:

  • návštevník zo Slovenska môže dostať český jazyk alebo inú menu,
  • obmedzenie krajín môže zablokovať zákazníka, ktorý tam patrí,
  • alebo naopak pustiť návštevníka z krajiny, do ktorej nepredávate.

Ručné sťahovanie dvakrát týždenne nikto nerobí. Navyše oficiálne sťahovanie od MaxMind vyžaduje účet a licenčný kľúč. Preto som pre vlastné obchody vytvoril modul, ktorý databázu udržiava aktuálnu za vás.

Modul Aktualizácia GeoIP databázy

Modul Aktualizácia GeoIP databázy automaticky aktualizuje databázu GeoLite2 City, ktorú PrestaShop používa na geolokáciu. Funguje v PrestaShope 8 aj 9 a nemení žiadne súbory PrestaShopu. Aktualizuje len súbor databázy.

Bez účtu MaxMind

Databáza sa sťahuje z verejného zrkadla, takže si nemusíte zakladať účet u MaxMind ani zadávať licenčný kľúč. Stačí, aby mal server obchodu prístup na adresu cdn.jsdelivr.net. Údaje GeoLite2 pochádzajú od spoločnosti MaxMind, dostupné sú na maxmind.com.

Overenie pred výmenou

Pokazená databáza by bola horšia ako stará. Modul preto novú databázu najprv stiahne do dočasného súboru, rozbalí ju a overí:

  • veľkosť a formát súboru MaxMind,
  • či ju dokáže otvoriť čítačka PrestaShopu,
  • či ide o databázu typu City,
  • skúšobné vyhľadanie IP adresy.

Až keď všetko prejde, nahradí súbor, ktorý používa PrestaShop. Ak sťahovanie alebo overenie zlyhá, ostáva pôvodná databáza a geolokácia funguje ďalej. Naraz beží vždy len jedna aktualizácia.

Prehľad stavu a upozornenia

V nastaveniach modulu vidíte dátum vydania databázy, jej veľkosť a výsledok poslednej aktualizácie. Modul vás upozorní, keď:

  • je geolokácia v PrestaShope vypnutá, hoci databázu aktualizujete,
  • je databáza staršia ako 30 dní, teda aktualizácia pravdepodobne nefunguje.

Výsledok každej aktualizácie sa zapíše aj do logov PrestaShopu.

Automatická aktualizácia cez cron

MaxMind vydáva novú databázu v utorok a v piatok. Modul preto odporúča spúšťať aktualizáciu v stredu a v sobotu ráno. Na výber máte dva spôsoby:

  • adresa s tajným tokenom – pridáte ju do cronu v administrácii hostingu,
  • príkazový riadok – funguje aj vtedy, keď je obchod v režime údržby.

Hotový príkaz skopírujete priamo z nastavení modulu. Ak cron nastavujete prvýkrát, pomôže vám návod na nastavenie cronu. Adresu viete kedykoľvek zmeniť, napríklad ak by unikla.

Geolokácia a predaj do zahraničia

Geolokácia je užitočná najmä pri predaji do viacerých krajín. Ak návštevníkovi z Česka hneď ukážete ceny v korunách, nákup je pre neho pohodlnejší. Aby boli tieto ceny správne, oplatí sa mať aj aktuálne kurzy mien. Viac o tom v článku o automatickej aktualizácii kurzov mien z ECB.

Pamätajte, že geolokácia je len odhad. Návštevník môže používať VPN alebo firemnú sieť v inej krajine. Preto by mal mať zákazník vždy možnosť jazyk a menu zmeniť ručne.

Ako geolokácia funguje v praxi

Keď návštevník prvýkrát otvorí obchod, PrestaShop vezme jeho IP adresu a vyhľadá ju v databáze GeoLite2 City, ktorá je uložená priamo na vašom serveri. Vyhľadanie prebieha lokálne, IP adresa sa pri tom nikam neposiela. Výsledkom je krajina, podľa ktorej sa obchod zariadi podľa vašich nastavení geolokácie.

V nastaveniach geolokácie v PrestaShope určíte:

  • ktoré krajiny môžu v obchode nakupovať,
  • čo sa má stať s návštevníkmi z ostatných krajín, napríklad len prezeranie katalógu,
  • čo robiť, keď sa krajinu nepodarí zistiť.

Pri testovaní myslite na to, že geolokácia sa nevzťahuje na vašu IP adresu zo zoznamu povolených adries. Najlepšie je overiť ju z inej siete, napríklad z mobilného pripojenia.

Na čo si dať pozor

  • Nezapínajte prísne obmedzenia naslepo. Ak zablokujete nákup z ostatných krajín, zákazník na dovolenke v zahraničí nebude môcť objednať. Zvážte, či nestačí len predvoliť menu a jazyk.
  • Kontrolujte vek databázy. Ak modul upozorní, že databáza je staršia ako 30 dní, cron pravdepodobne nebeží.
  • Server musí mať prístup na internet. Niektoré hostingy blokujú odchádzajúce spojenia, vtedy treba povoliť adresu cdn.jsdelivr.net.

Nastavenie krok za krokom

  1. Nahrajte modul cez Moduly › Správca modulov › Nahrať modul a nainštalujte ho.
  2. V nastaveniach modulu kliknite na Aktualizovať teraz, aby sa stiahla prvá databáza.
  3. Zapnite geolokáciu v Medzinárodné › Lokalizácia › Geolokácia a nastavte, čo sa má podľa krajiny diať.
  4. Skopírujte z modulu príkaz pre cron a pridajte ho na hostingu, ideálne na stredu a sobotu ráno.
  5. Po prvom behu cronu skontrolujte v module dátum a výsledok poslednej aktualizácie.

Časté otázky

Potrebujem účet u MaxMind? Nie. Databáza sa sťahuje z verejného zrkadla bez licenčného kľúča.

Čo ak sťahovanie zlyhá? Pôvodná databáza ostane a geolokácia funguje ďalej. Výsledok uvidíte v module aj v logoch.

Funguje aktualizácia aj počas údržby obchodu? Áno, ak cron spúšťate cez príkazový riadok.

Zmaže sa databáza pri odinštalovaní modulu? Nie. Odinštalovanie zmaže len nastavenia modulu, databáza ostane.

Posiela sa IP adresa návštevníka niekam von? Nie. Databáza je uložená na vašom serveri a vyhľadanie krajiny prebieha lokálne. Modul sťahuje len samotnú databázu.

Ako často sa databáza aktualizuje? Podľa toho, ako nastavíte cron. Odporúčame dvakrát týždenne, v stredu a v sobotu, hneď po vydaní novej databázy.

Cena a ako začať

Modul stojí 14,90 € za časovo neobmedzenú licenciu pre jednu doménu s 12 mesiacmi aktualizácií a podpory. Vyžaduje PrestaShop 8.0 až 9.x a PHP 7.2 alebo novší. Postup inštalácie a nastavenia nájdete v dokumentácii modulu, kúpiť ho môžete na stránke produktu: modul Aktualizácia GeoIP databázy.

Contact Form
Návrat hore