Tudo o que quer saber antes de instalar.
Uma análise detalhada de como o Indicativo Telefónico Internacional no PrestaShop: Bandeiras e Normalização E.164 funciona, porque o construímos assim e o raciocínio por trás das funcionalidades acima.
O problema: números de telefone ilegíveis, incomparáveis e incontactáveis
Numa loja que vende para vários países, os números de telefone chegam à base de dados em todos os formatos imagináveis: 912 345 678, 912345678, +351 912 345 678, 00351 912 345 678, 351-912-345-678. Consequência: torna-se impossível detetar clientes duplicados, as exportações para um CRM ou ERP têm de ser limpas à mão, os serviços de SMS transacional rejeitam um número em cada três e as equipas comerciais perdem tempo a reformatar antes de cada chamada internacional.
A solução: um formato único, uma experiência clara e uma garantia no servidor
O módulo acrescenta um seletor de indicativo com bandeira diretamente nos campos de telefone e telemóvel, em todo o lado onde aparecem: formulário de registo, gestão de moradas e checkout em 5 etapas ou de página única. O cliente vê de imediato qual o indicativo aplicado, pode alterá-lo em dois cliques e a lista filtra-se com pesquisa instantânea. Do lado da base de dados, seja o que for que o cliente escreva, recebe sempre um formato limpo, normalizado e imediatamente utilizável.
Sincronização automática com o país de entrega
Quando o cliente escolhe o país no formulário de morada, o indicativo do seletor de telefone muda automaticamente. Escolher Espanha passa para +34, escolher Alemanha passa para +49, sem intervenção manual. Esta sincronização funciona também nas recargas AJAX do checkout nativo do PrestaShop (evento updatedAddressForm). Para temas muito personalizados, um MutationObserver com debounce serve de rede de segurança.
Normalização E.164 garantida do lado do servidor
A normalização no navegador melhora a experiência, mas não chega. Se uma encomenda for criada pela API REST do PrestaShop, pelo back-office, por uma importação CSV ou por outro módulo que manipule a classe Address, o JavaScript do formulário nunca chega a correr. Por isso o módulo liga também os hooks actionObjectAddressAddBefore e actionObjectAddressUpdateBefore: antes de cada INSERT ou UPDATE na tabela ps_address, os campos phone e phone_mobile passam pela normalização do lado do servidor. Não há forma de contornar.
Regras de normalização aplicadas
Para uma morada associada a um país cujo indicativo é +351: um número que comece por mais é mantido tal e qual (só os espaços e separadores são retirados). Um número que comece por 00 vê o 00 substituído por mais. Um número que comece pelo prefixo nacional 0 vê esse 0 retirado e substituído por mais seguido do indicativo do país. Um número que já comece pelo indicativo sem o mais recebe simplesmente o mais. Estas regras seguem a norma internacional E.164 usada por todos os operadores de telecomunicações e pelos serviços profissionais de SMS.
Países preferidos e experiência do seletor
Por predefinição, os países França, Bélgica, Luxemburgo, Suíça, Reino Unido, Estados Unidos, Alemanha, Espanha, Itália e Países Baixos ficam fixados no topo da lista. Essa lista é totalmente configurável no back-office (códigos ISO separados por vírgula), pelo que basta acrescentar PT para colocar Portugal em primeiro. Os restantes países aparecem por baixo, por ordem alfabética. Uma barra de pesquisa permite encontrar um país por nome, código ISO ou indicativo. Toda a lista é construída a partir dos países ativos na sua loja, lidos diretamente da coluna nativa ps_country.call_prefix.
Sem dependências, com bandeiras Unicode nativas
O módulo não inclui nenhuma biblioteca externa. Sem intl-tel-input para manter, sem plugins jQuery e sem frameworks CSS pesadas. As bandeiras são emojis Unicode (Regional Indicator Symbols) suportados de origem por todos os navegadores e sistemas modernos. A folha de estilos tem menos de 4 kB e o script menos de 16 kB. Sem pedidos de rede adicionais, sem CDN externos e sem envio de dados a terceiros.
Ainda não existem avaliações.