Aller au contenu principal

Géolocalisation

Pour afficher une date de livraison, le module doit savoir où se trouve le visiteur. Cette page explique comment il le détermine, comment rendre cette détection instantanée, et comment l'empêcher complètement lorsqu'elle n'est pas nécessaire.

remarque

Disponible depuis la v4.3

Vue d'ensemble​

Les dates de livraison dépendent de la destination. Un transporteur qui atteint Madrid en un jour peut en mettre quatre pour atteindre les îles Canaries, et ne pas livrer du tout la Norvège. Avant de pouvoir afficher quoi que ce soit, le module a donc besoin du pays du visiteur — et, si vous livrez par état ou par région, de sa région également.

Le plus souvent, il n'a jamais à le demander. Le module parcourt d'abord les sources les moins coûteuses et s'arrête à la première qui répond :

  1. L'adresse du client lui-même. S'il est connecté, ou s'il a une adresse sur son panier, c'est là que la commande sera livrée. Rien ne la surpasse, et aucune autre source n'est consultée.
  2. Votre CDN. Si votre boutique se trouve derrière CloudFlare, CloudFront, Akamai, Google App Engine ou un proxy exécutant un module GeoIP, le pays a déjà été déterminé avant que la requête n'atteigne votre boutique. Le lire ne coûte rien.
  3. Une base de données locale, si vous en installez une. Environ deux dixièmes de milliseconde, et l'adresse IP du visiteur ne quitte jamais votre serveur. Voir ci-dessous.
  4. Des services en ligne gratuits, en dernier recours. Précis, mais chacun est un aller-retour sur Internet, typiquement un dixième de seconde.

Si toutes les sources échouent, le module se rabat sur le pays par défaut de votre boutique plutôt que de ne rien afficher. Un visiteur ne voit jamais un espace vide parce qu'un service de géolocalisation avait un mauvais jour.

Le résultat est mémorisé pour le reste de la visite, de sorte que le travail n'est effectué qu'une seule fois au maximum par visiteur — et un échec est également mémorisé, brièvement, de sorte qu'une panne coûte une tentative plutôt qu'une par page.

Quand la détection est entièrement ignorée​

Si chaque transporteur actif de votre boutique couvre déjà chaque zone active, savoir où se trouve un visiteur ne peut pas changer les transporteurs ou les dates qu'il voit. Le module s'en aperçoit et ignore complètement la détection.

C'est automatique et ne nécessite aucune configuration. La détection se réactive d'elle-même dès que vous ajoutez un transporteur limité à certaines zones. Vous pouvez toujours voir quel cas s'applique : le panneau Diagnostics indique si la détection est active, inutile ou désactivée.

Installer une base de données locale​

Une base de données locale rend la détection instantanée et évite que le module ne contacte qui que ce soit. Elle est facultative — le module fonctionne sans — mais sur une boutique très fréquentée, c'est la plus grande accélération possible, et elle conserve les adresses IP des visiteurs sur votre propre serveur.

  1. Allez dans l'onglet Avancé (Advanced), puis Géolocalisation (Geolocation).
  2. Trouvez le panneau Base de données locale des pays (Local country database).
  3. Choisissez une source dans Source de la base de données locale (Local database source) et cliquez sur Télécharger la base de données maintenant (Download the database now).

Le téléchargement prend jusqu'à une minute et pèse environ 8 Mo. S'il échoue, rien ne change : le module continue d'utiliser les recherches en ligne exactement comme avant. Le fichier n'est jamais installé automatiquement, jamais récupéré pendant qu'un client navigue, et jamais inclus dans le paquet du module — il est téléchargé sur votre boutique, à votre demande.

Quelle source choisir​

DB-IP LiteMaxMind GeoLite2
Compte requisNonOui, gratuit
Connaît les paysOuiOui
Connaît les régions et les étatsNonOui
Mise à jourMensuelleHebdomadaire
TailleEnviron 8 MoPlus grande

DB-IP Lite est le choix recommandé et ne demande rien de votre part, à part un clic.

MaxMind demande un identifiant de compte et une clé de licence, tous deux gratuits sur maxmind.com. Ce sont des réglages ordinaires de la section Géolocalisation : vous les enregistrez avec le bouton Enregistrer de la page, et le bouton de téléchargement ne fait que télécharger. La raison est liée aux licences : MaxMind concède les données à vous, pas à nous ; le téléchargement s'effectue donc avec vos identifiants et les données appartiennent à votre boutique. Choisissez-le si vous livrez par état ou par région, car c'est la seule des deux sources qui contient des codes de région.

Si vous livrez par état et installez la base de données limitée aux pays, le module vous l'indique dans le panneau et continue de résoudre les régions en ligne plutôt que de faire passer un pays pour une région.

La maintenir à jour​

Le panneau affiche la date de construction des données — pas la date de votre téléchargement, qui peut être très différente — et vous avertit lorsqu'elles deviennent anciennes. Un nouveau téléchargement la remplace. L'ancien fichier reste en place jusqu'à ce que le nouveau ait été ouvert et vérifié, de sorte qu'un téléchargement interrompu ne peut pas casser la détection.

Désactiver la détection​

Si vos dates de livraison ne dépendent pas de la destination, vous pouvez désactiver complètement la détection : Avancé > Géolocalisation > Désactiver la géolocalisation (Advanced > Geolocation > Disable geolocation). Chaque visiteur est alors considéré comme se trouvant dans le pays par défaut de votre boutique.

Tout ce qui figure sur cette page se trouve dans cette unique section : si la détection s'exécute, si les zones sont résolues par pays ou par état, et quelle base de données locale répond à la recherche.

Confidentialité​

Une adresse IP est une donnée personnelle au sens du RGPD, et les services en ligne gratuits sont des tiers, pour la plupart situés hors de l'UE.

Installer une base de données locale supprime entièrement ce problème : la détection s'effectue sur votre propre serveur et aucune donnée de visiteur n'est envoyée ailleurs. Pour les boutiques situées dans l'UE, c'est la configuration recommandée et, combinée à l'omission décrite plus haut, de nombreuses boutiques finissent par ne faire aucun appel externe.

Si vous utilisez la base de données DB-IP, sa licence exige une attribution, que le module affiche dans le panneau.

Fichiers​

FichierRôle
classes/EDIpGeolocationHelper.phpParcourt les sources dans l'ordre
classes/EDGeoDatabase.phpLit la base de données locale
classes/EDGeoDatabaseUpdater.phpLa télécharge et l'installe
classes/EDHttpTransport.phpRequêtes sortantes, avec un budget de temps strict
views/templates/admin/geodatabase.tplLe panneau du back office
geoip/L'emplacement de la base de données téléchargée

Réglages​

RéglagePar défautCe qu'il fait
ED_GEODB_SOURCEdbipQuelle base de données télécharger
ED_GEODB_MAXMIND_ACCOUNTvideVotre identifiant de compte MaxMind
ED_GEODB_MAXMIND_KEYvideVotre clé de licence MaxMind
ED_DISABLE_GEOLOCATIONdésactivéIgnorer la détection, toujours utiliser le pays par défaut
ED_SHIPPING_TYPEcountrySi les zones sont résolues par pays ou par état
ED_FORCE_COUNTRYdésactivéRésoudre les zones par pays même en mode état

Remarques​

  • La détection ne retarde jamais une page de plus d'environ six dixièmes de seconde, même si tous les services en ligne sont indisponibles.
  • Sur PrestaShop 1.6, la base de données locale n'est pas disponible, car cette version n'inclut pas la bibliothèque de lecture. La détection fonctionne normalement via les autres sources.
  • Dans une configuration multiboutique, chaque boutique a ses propres réglages, et la base de données est partagée.