Indicativo Telefónico Internacional (dfphoneintl)
Instalação, configuração e regras de normalização E.164 do módulo de indicativo telefónico internacional com bandeira para PrestaShop 8 e 9.
Apresentação
O DataFirefly International Phone Input (dfphoneintl) acrescenta um seletor de indicativo telefónico com bandeira aos campos Telefone e Telemóvel do PrestaShop, e uniformiza os números no formato internacional E.164 na base de dados. O módulo atua a dois níveis: do lado do navegador para a experiência do utilizador, e do lado do servidor para garantir que qualquer inserção ou atualização de morada, incluindo via API, back-office ou importação, produz um número normalizado.
Formato de armazenamento: para um cliente português que introduza 912345678, o valor guardado na base de dados é +351912345678: indicativo do país, sem espaços nem separadores. Os números portugueses não têm prefixo « 0 » de rede, ao contrário dos franceses ou espanhóis; o módulo trata os dois casos.
Pré-requisitos
- PrestaShop 8.0.0 a 9.99.99
- PHP 7.4 no mínimo (8.1+ recomendado)
- Nenhuma dependência externa: o módulo não incorpora nenhuma biblioteca de terceiros
Instalação
- Descarregue o arquivo
dfphoneintl-1.0.0.zipa partir da sua conta de cliente DataFirefly. - No back-office PrestaShop, vá a Módulos → Gestor de módulos → Instalar um módulo.
- Arraste e largue o ficheiro ZIP e clique em Instalar.
- O módulo regista-se automaticamente nos hooks necessários. Não é criada nenhuma tabela SQL: o módulo lê os indicativos a partir da tabela nativa
ps_country.
Configuração
Vá a Módulos → Gestor de módulos → DataFirefly International Phone Input → Configurar. Estão disponíveis três definições:
- Ativar no campo « Telefone »: ativa ou desativa o seletor e a normalização no campo
phone. - Ativar no campo « Telemóvel »: idem para o campo
phone_mobile. - Países preferidos: lista de códigos ISO2 separados por vírgulas. Estes países são fixados no topo da lista pendente. Valor por defeito:
fr,be,lu,ch,gb,us,de,es,it,nl; numa loja portuguesa, coloque por exemplopt,es,br,fr,gb,de,ch,lu.
A lista dos países apresentados no seletor provém dos países ativados na sua loja (Envio → Zonas geográficas → Países). Um país desativado ou sem indicativo preenchido na coluna call_prefix não aparece.
Funcionamento do lado do cliente
Páginas em causa
O seletor aparece em todas as páginas do front-office onde figuram campos de telefone: criação de conta, inscrição, gestão das moradas, funil de encomenda (5 etapas e one-page checkout), página de identidade, página de contacto e acompanhamento de encomenda de convidado.
Sincronização com o país
Quando o cliente muda o país no formulário de morada, o indicativo do seletor atualiza-se automaticamente. Selecionar Espanha passa o indicativo a +34, Brasil a +55, etc. Esta sincronização funciona também nos recarregamentos AJAX do checkout nativo: o módulo escuta os eventos PrestaShop updatedAddressForm, updatedAddress, updateCustomerAddressForm e changedCheckoutStep, com um MutationObserver com debounce como rede de segurança para os temas fortemente personalizados.
Deteção nas moradas existentes
Se o campo já contiver um número em formato internacional (edição de uma morada existente), o módulo deteta o país correspondente por correspondência do indicativo mais longo (longest dial-code match): +1242... é reconhecido como Bahamas e não como Estados Unidos.
Funcionamento do lado do servidor
A normalização no servidor está ligada aos hooks actionObjectAddressAddBefore e actionObjectAddressUpdateBefore. Antes de cada INSERT ou UPDATE na tabela ps_address, os campos phone e phone_mobile passam pela classe DfPhoneFormatter. Isto cobre todos os canais de escrita: formulários do front-office, back-office, webservice, importações CSV e módulos de terceiros que manipulam a classe Address.
Regras de normalização
Para uma morada associada a um país de indicativo +351:
- Número que começa por
+→ conservado tal como está, só os separadores são retirados:+351 912 345 678torna-se+351912345678. - Número que começa por
00→ o00é substituído por+:00351912345678torna-se+351912345678. - Número que começa por
0(prefixo de rede, nos países que o usam como França ou Espanha) → o0é retirado e o indicativo é prefixado:0633547864com indicativo +33 torna-se+33633547864. - Número que já começa pelo indicativo sem
+→ o+é simplesmente acrescentado:351912345678torna-se+351912345678. - Outro número composto apenas por algarismos → o indicativo é prefixado:
912345678torna-se+351912345678.
As moradas existentes não são modificadas retroativamente na instalação. A normalização aplica-se na próxima gravação de cada morada. Para uma normalização massiva do existente, contacte o suporte: um script SQL que segue a mesma lógica está disponível a pedido.
Compatibilidade de temas e checkout
- Tema Classic PS 8 (Bootstrap 4) e tema PS 9 (Bootstrap 5) suportados nativamente.
- Checkout em 5 etapas e one-page checkout (OPC) suportados.
- As bandeiras são emojis Unicode (Regional Indicator Symbols): sem sprite nem CDN, renderização nativa por todos os navegadores e SO modernos.
- Multiloja: parâmetros globais, lista de países filtrada por loja.
- Multilingue: nomes dos países apresentados no idioma do visitante.
Resolução de problemas
O seletor não aparece
- Verifique que o campo está ativado na configuração do módulo.
- Verifique que o seu tema usa os nomes de campos padrão
phone/phone_mobile(ouaddress[phone]/address[phone_mobile]). Para um campo renomeado por um tema personalizado, contacte o suporte. - Limpe a cache do PrestaShop (Parâmetros avançados → Desempenho) depois da instalação.
As bandeiras aparecem como letras (PT, ES…)
Comportamento esperado em alguns sistemas Windows antigos que não renderizam os emojis de bandeiras. O indicativo +351 continua apresentado e o módulo continua plenamente funcional.
O indicativo não segue a mudança de país
Num tema muito personalizado cujo select de país não usa o nome id_country, a sincronização automática não consegue ligar-se. O MutationObserver reinicializa mesmo assim o widget, e o cliente pode escolher manualmente o seu indicativo. Contacte o suporte com o URL da sua loja para uma adaptação.
Desinstalação
A desinstalação elimina as três chaves de configuração do módulo. Os números já normalizados na base de dados ficam em formato internacional: nenhum dado de cliente é modificado nem eliminado.
Suporte
Suporte por e-mail incluído, atualizações incluídas durante 12 meses. Garantia de satisfação ou reembolso de 14 dias em todos os módulos DataFirefly.