Saltar al contenido principal

Geolocalización

Para mostrar una fecha de entrega, el módulo necesita saber dónde está el visitante. Esta página explica cómo lo averigua, cómo conseguir que sea instantáneo y cómo evitar que ocurra cuando no hace falta.

nota

Disponible desde la v4.3

Descripción general​

Las fechas de entrega dependen del destino. Un transportista que llega a Madrid en un día puede tardar cuatro en llegar a las Islas Canarias, y puede que no entregue en Noruega. Así que, antes de poder mostrar nada, el módulo necesita el país del visitante y, si entregas por estado o región, también su región.

La mayoría de las veces no tiene que preguntar. El módulo recorre primero las fuentes más baratas y se detiene en la primera que responde:

  1. La dirección del propio cliente. Si ha iniciado sesión, o tiene una dirección en su carrito, ahí es donde irá el pedido. Nada es mejor que eso y no se consulta nada más.
  2. Tu CDN. Si tu tienda está detrás de CloudFlare, CloudFront, Akamai, Google App Engine o un proxy con un módulo GeoIP, el país ya se calculó antes de que la petición llegara a tu tienda. Leerlo no cuesta nada.
  3. Una base de datos local, si la instalas. Unas dos décimas de milisegundo, y la dirección IP del visitante nunca sale de tu servidor. Consulta más abajo.
  4. Servicios en línea gratuitos, como último recurso. Son precisos, pero cada uno supone un viaje de ida y vuelta por internet, normalmente de una décima de segundo.

Si todas las fuentes fallan, el módulo recurre al país predeterminado de tu tienda en lugar de no mostrar nada. Un visitante nunca ve un espacio en blanco porque un servicio de geolocalización estuviera teniendo un mal día.

El resultado se recuerda durante el resto de la visita, así que el trabajo se hace como máximo una vez por visitante. Un fallo también se recuerda, brevemente, de modo que una caída del servicio cuesta un intento y no uno por cada página.

Cuándo se omite por completo la detección​

Si todos los transportistas activos de tu tienda ya cubren todas las zonas activas, saber dónde está un visitante no puede cambiar los transportistas ni las fechas que ve. El módulo lo detecta y omite la detección por completo.

Esto es automático y no requiere configuración. Se vuelve a activar en cuanto añades un transportista restringido a determinadas zonas. Siempre puedes ver cuál es el caso: el panel de Diagnóstico (Diagnostics) indica si la detección está activa, no es necesaria o está desactivada.

Instalación de una base de datos local​

Una base de datos local hace que la detección sea instantánea y evita que el módulo contacte con nadie. Es opcional (el módulo funciona sin ella), pero en una tienda con mucho tráfico es la mayor mejora de velocidad disponible, y mantiene las direcciones IP de los visitantes en tu propio servidor.

  1. Ve a la pestaña Avanzado (Advanced) y después a Geolocalización (Geolocation).
  2. Busca el panel Base de datos local de países (Local country database).
  3. Elige una fuente en Fuente de la base de datos local (Local database source) y haz clic en Descargar la base de datos ahora (Download the database now).

La descarga tarda hasta un minuto y pesa unos 8 MB. Si falla, no cambia nada: el módulo sigue usando las consultas en línea exactamente igual que antes. El archivo nunca se instala automáticamente, nunca se descarga mientras un cliente navega y nunca se incluye en el paquete del módulo: se descarga en tu tienda, a petición tuya.

Qué fuente elegir​

DB-IP LiteMaxMind GeoLite2
Requiere cuentaNoSí, gratuita
Conoce los paísesSíSí
Conoce regiones y estadosNoSí
ActualizaciónMensualSemanal
TamañoUnos 8 MBMayor

DB-IP Lite es la opción recomendada y no necesita nada de ti salvo un clic.

MaxMind pide un ID de cuenta y una clave de licencia, ambos gratuitos en maxmind.com. Los dos son ajustes normales de la sección Geolocalización: los guardas con el botón Guardar de la página, y el botón de descarga solo descarga. El motivo es la licencia: MaxMind concede los datos a ti, no a nosotros, así que la descarga se realiza con tus credenciales y los datos pertenecen a tu tienda. Elígela si entregas por estado o región, ya que es la única de las dos que incluye códigos de región.

Si entregas por estado e instalas la base de datos que solo contiene países, el módulo te lo indica en el panel y sigue resolviendo las regiones en línea en lugar de fingir que un país es una región.

Mantenerla actualizada​

El panel muestra cuándo se generaron los datos (no cuándo los descargaste, que puede ser muy distinto) y te avisa cuando empiezan a quedarse antiguos. Volver a descargarla la sustituye. El archivo antiguo permanece en su sitio hasta que el nuevo se ha abierto y comprobado, de modo que una descarga interrumpida no puede romper la detección.

Desactivar la detección​

Si tus fechas de entrega no dependen del destino, puedes desactivar la detección por completo: Avanzado > Geolocalización > Desactivar la geolocalización (Disable geolocation). Todos los visitantes se tratan entonces como si estuvieran en el país predeterminado de tu tienda.

Todo lo de esta página reside en esa única sección: si la detección se ejecuta, si las zonas se resuelven por país o por estado y qué base de datos local responde a la consulta.

Privacidad​

Una dirección IP es un dato personal según el RGPD, y los servicios en línea gratuitos son terceros, la mayoría fuera de la UE.

Instalar una base de datos local elimina esto por completo: la detección se realiza en tu propio servidor y no se envía ningún dato de los visitantes a ningún sitio. Para las tiendas de la UE es la configuración recomendada y, combinada con la omisión descrita arriba, muchas tiendas acaban sin hacer ninguna llamada externa.

Si usas la base de datos DB-IP, su licencia exige una atribución, que el módulo muestra en el panel.

Archivos​

ArchivoFinalidad
classes/EDIpGeolocationHelper.phpRecorre las fuentes por orden
classes/EDGeoDatabase.phpLee la base de datos local
classes/EDGeoDatabaseUpdater.phpLa descarga y la instala
classes/EDHttpTransport.phpPeticiones salientes, con un presupuesto de tiempo estricto
views/templates/admin/geodatabase.tplEl panel del back office
geoip/Donde se almacena la base de datos descargada

Ajustes​

AjustePor defectoQué hace
ED_GEODB_SOURCEdbipQué base de datos descargar
ED_GEODB_MAXMIND_ACCOUNTvacíoTu ID de cuenta de MaxMind
ED_GEODB_MAXMIND_KEYvacíoTu clave de licencia de MaxMind
ED_DISABLE_GEOLOCATIONdesactivadoOmite la detección y usa siempre el país predeterminado
ED_SHIPPING_TYPEcountrySi las zonas se resuelven por país o por estado
ED_FORCE_COUNTRYdesactivadoResuelve las zonas por país incluso en modo estado

Notas​

  • La detección nunca retrasa una página más de unas seis décimas de segundo, aunque todos los servicios en línea estén caídos.
  • En PrestaShop 1.6 la base de datos local no está disponible, porque esa versión no incluye la biblioteca de lectura. La detección funciona con normalidad a través de las demás fuentes.
  • En una configuración multitienda, cada tienda tiene sus propios ajustes y la base de datos es compartida.