Todo lo que querrías saber antes de instalar.
Una mirada detallada a cómo funciona Prefijo Telefónico Internacional PrestaShop — Banderas y Normalización E.164, por qué lo construimos así y la lógica detrás de las características anteriores.
El problema: números de teléfono ilegibles, incomparables, incontactables
En una tienda multipaís, los números de teléfono llegan a la base en todos los formatos imaginables: 06 33 54 78 64, 0633547864, más 33 6 33 54 78 64, 0033 6 33 54 78 64, 33-633-547-864. Consecuencia: imposible detectar duplicados de clientes, las exportaciones a un CRM o ERP deben limpiarse manualmente, los servicios de SMS transaccional rechazan un número de cada tres, y los equipos comerciales pierden tiempo reformateando antes de cada llamada internacional.
La solución: un formato único, una UX clara, una garantía servidor
El módulo añade un selector de prefijo con bandera directamente en los campos de teléfono y teléfono móvil, en todos los lugares donde aparecen: formulario de registro, gestión de direcciones, checkout de 5 pasos o de una página. El cliente ve inmediatamente qué prefijo se aplica, puede cambiarlo en dos clics, y la lista se filtra mediante búsqueda instantánea. Del lado base, sin importar lo que el cliente teclea, usted recupera siempre un formato limpio, normalizado, inmediatamente explotable.
Sincronización automática con el país de entrega
Cuando el cliente selecciona su país en el formulario de dirección, el prefijo del selector de teléfono cambia automáticamente. Seleccionar Bélgica pasa a más 32, seleccionar Alemania pasa a más 49, sin intervención manual. Esta sincronización funciona también en las recargas AJAX del checkout PrestaShop nativo (evento updatedAddressForm). Para temas muy personalizados, un MutationObserver debounced sirve como red de seguridad.
Normalización E.164 garantizada del lado servidor
La normalización del lado navegador asegura la UX, pero no es suficiente. Si un pedido se crea vía la API REST de PrestaShop, vía el back-office, vía una importación CSV, o vía otro módulo que manipula la clase Address, el formulario JS nunca se ejecuta. Por eso el módulo también se conecta a los hooks actionObjectAddressAddBefore y actionObjectAddressUpdateBefore: antes de cada INSERT o UPDATE en la tabla ps_address, los campos phone y phone_mobile pasan por la normalización del lado servidor. Ningún bypass posible.
Reglas de normalización aplicadas
Para una dirección asociada a un país con prefijo más 33: un número que empieza por más se conserva tal cual (solo se eliminan los espacios y separadores). Un número que empieza por 00 ve el 00 reemplazado por más. Un número que empieza por 0 (trunk prefix nacional) ve el 0 eliminado y reemplazado por más seguido del prefijo del país. Un número que empieza ya por el prefijo sin el más simplemente recibe el más antepuesto. Estas reglas cumplen con la norma E.164 internacional utilizada por todos los operadores telefónicos y los servicios de SMS profesionales.
Países preferidos y UX del selector
Por defecto, los países Francia, Bélgica, Luxemburgo, Suiza, Reino Unido, Estados Unidos, Alemania, España, Italia y Países Bajos están fijados en la parte superior de la lista. Esta lista es totalmente configurable desde el back-office (códigos ISO separados por comas). Los demás países aparecen debajo, ordenados alfabéticamente. Una barra de búsqueda permite encontrar instantáneamente un país por nombre, código ISO o prefijo. Toda la lista se construye a partir de los países activados en su tienda, leída directamente desde la columna nativa ps_country.call_prefix.
Cero dependencias, banderas Unicode nativas
El módulo no incluye ninguna librería externa. Sin intl-tel-input que mantener, sin plugin jQuery, sin framework CSS pesado. Las banderas son emojis Unicode (Regional Indicator Symbols) soportados nativamente por todos los navegadores y sistemas operativos modernos. La hoja de estilo pesa menos de 4 KB, el script menos de 16 KB. Ninguna llamada de red adicional, ningún CDN externo, ninguna fuga de datos a terceros.
No hay valoraciones aún.