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.
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:
- 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.
- 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.
- 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.
- 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.
- Ve a la pestaña Avanzado (Advanced) y después a Geolocalización (Geolocation).
- Busca el panel Base de datos local de países (Local country database).
- 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 Lite | MaxMind GeoLite2 | |
|---|---|---|
| Requiere cuenta | No | Sí, gratuita |
| Conoce los países | Sí | Sí |
| Conoce regiones y estados | No | Sí |
| Actualización | Mensual | Semanal |
| Tamaño | Unos 8 MB | Mayor |
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
| Archivo | Finalidad |
|---|---|
classes/EDIpGeolocationHelper.php | Recorre las fuentes por orden |
classes/EDGeoDatabase.php | Lee la base de datos local |
classes/EDGeoDatabaseUpdater.php | La descarga y la instala |
classes/EDHttpTransport.php | Peticiones salientes, con un presupuesto de tiempo estricto |
views/templates/admin/geodatabase.tpl | El panel del back office |
geoip/ | Donde se almacena la base de datos descargada |
Ajustes
| Ajuste | Por defecto | Qué hace |
|---|---|---|
ED_GEODB_SOURCE | dbip | Qué base de datos descargar |
ED_GEODB_MAXMIND_ACCOUNT | vacío | Tu ID de cuenta de MaxMind |
ED_GEODB_MAXMIND_KEY | vacío | Tu clave de licencia de MaxMind |
ED_DISABLE_GEOLOCATION | desactivado | Omite la detección y usa siempre el país predeterminado |
ED_SHIPPING_TYPE | country | Si las zonas se resuelven por país o por estado |
ED_FORCE_COUNTRY | desactivado | Resuelve 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.