# DataFirefly Dealer Locator: modo catálogo e mapa de revendedores

> Este módulo transforma uma loja PrestaShop 8 ou 9 numa montra de marca: desativa a venda online em todo ou parte do catálogo, adiciona um botão Onde comprar nas páginas…

- Página: <https://www.datafirefly.com/pt/documentation/dfdealerlocator/>
- Idioma: pt
- Atualizado em: 2026-10-07
- Outros idiomas: [fr](https://www.datafirefly.com/documentation/dfdealerlocator/index.md), [en](https://www.datafirefly.com/en/documentation/dfdealerlocator/index.md), [es](https://www.datafirefly.com/es/documentation/dfdealerlocator/index.md), [de](https://www.datafirefly.com/de/documentation/dfdealerlocator/index.md), [it](https://www.datafirefly.com/it/documentation/dfdealerlocator/index.md), [pl](https://www.datafirefly.com/pl/documentation/dfdealerlocator/index.md), [nl](https://www.datafirefly.com/nl/documentation/dfdealerlocator/index.md)
- Índice: <https://www.datafirefly.com/pt/documentation/llms.txt>

Este módulo transforma uma loja PrestaShop 8 ou 9 numa montra de marca: desativa a venda online em todo ou parte do catálogo, adiciona um botão Onde comprar nas páginas de produto e publica um diretório de revendedores com mapa, horários, formulário de contacto e uma página por revendedor.

## Instalação

1. Em **Módulos > Gestor de módulos**, clique em **Carregar um módulo** e envie o ficheiro ZIP.
2. O módulo cria o menu **Vender > Rede de revendedores** com três entradas: Revendedores, Pedidos de contacto e Configurações.
3. A página do diretório é criada automaticamente com um URL traduzido por língua: `/onde-comprar`, `/where-to-buy`, `/ou-acheter`, `/donde-comprar`, etc.

Para atualizar, basta carregar o novo ZIP: os scripts de atualização adicionam as colunas e os hooks em falta. Se o diretório ou as páginas de revendedor devolverem um erro 404, guarde uma vez **Parâmetros da loja > Tráfego e SEO** para regenerar o ficheiro .htaccess.

Compatibilidade: PrestaShop 8.0 a 9.x, multiloja, sem dependências Composer. Traduções incluídas em inglês, francês, espanhol, alemão, italiano, neerlandês, polaco e português.

## Configurar o modo catálogo

Abra **Rede de revendedores > Configurações**, bloco **Modo catálogo**. O modo catálogo é aplicado em tempo real: a definição nativa do PrestaShop nunca é alterada, e tudo volta ao normal se desativar o módulo.

### Venda online

- **Ativada**: o modo catálogo está desligado, o módulo funciona apenas como diretório.
- **Desativada para todo o catálogo**: nenhum produto pode ser adicionado ao carrinho.
- **Desativada apenas para a seleção**: só as categorias, marcas e produtos escolhidos abaixo passam a modo catálogo.
- **Desativada para tudo exceto a seleção**: a seleção continua à venda online, o resto passa a modo catálogo.

### Preços, mensagem e carrinho

- **Ocultar preços**: desativado, os preços continuam visíveis. Pode então mostrar uma etiqueta sob o preço, por defeito Preço de venda recomendado.
- **Mensagem na página do produto**: texto mostrado acima do botão, por exemplo Este produto é vendido exclusivamente na nossa rede de revendedores autorizados. Deixe vazio para ocultar.
- **Redirecionar o carrinho e a encomenda para o diretório de revendedores**: em modo catálogo completo, as páginas de carrinho e encomenda enviam para o diretório.

O carrinho é bloqueado no servidor: uma adição forçada através de um URL é recusada.

### Grupos de clientes isentos

Assinale os grupos que continuam a poder encomendar online. Exemplo: um grupo Revendedores que encomenda o stock no site enquanto o público só vê o catálogo.

## O botão Onde comprar

Bloco **Botão Onde comprar** das configurações:

- **Produtos abrangidos**: apenas os produtos que não podem ser comprados online, ou todos os produtos.
- **Texto do botão**, traduzível.
- **Ao clicar**: abrir uma janela com o mapa e os revendedores do produto, ou ir para o diretório filtrado pelo produto.
- **Mostrar a disponibilidade sob o botão**: Disponível em 14 revendedores e, depois, o revendedor mais próximo logo que o visitante já tenha feito uma pesquisa localizada.
- **Listar os revendedores online**: os revendedores do tipo Revendedor online aparecem à parte, com um botão para o produto na loja deles.

O botão só lista os revendedores que vendem o produto (separador Produtos vendidos de cada revendedor). A janela abre na última cidade pesquisada pelo visitante.

## Diretório e mapa

Bloco **Diretório de revendedores e mapa**:

- **Texto de introdução** acima da pesquisa e **cor de destaque** dos botões, marcadores e agrupamentos.
- **Centro e zoom por defeito** do mapa, **unidade** (km ou milhas), **opções de raio**, **raio por defeito** (0 = sem limite) e **número máximo de resultados**.
- **Estilo do mapa**: CARTO Voyager, CARTO Positron, OpenStreetMap ou servidor de mosaicos próprio (URL https com {z}, {x} e {y}).
- **Perguntar antes de carregar o mapa**: pelo RGPD, o servidor de mosaicos só recebe o IP do visitante após um clique.
- **Agrupar marcadores próximos** e **uma cor de marcador por tipo**, com legenda no mapa.
- **Lista completa de revendedores por país** sob o mapa, legível pelos motores de pesquisa.
- **Uma página por revendedor**: ver mais abaixo.

O visitante pesquisa por cidade ou código postal, ou usa a sua localização. Pode filtrar por tipo de revendedor e assinalar Aberto agora. No telemóvel, um botão alterna entre a lista e o mapa. O mapa Leaflet está alojado no módulo: não é necessária nenhuma chave API.

## Geocodificação

A geocodificação transforma uma morada ou uma cidade em coordenadas. Os resultados ficam em cache na base de dados.

- **OpenStreetMap Nominatim**: gratuito, limitado a um pedido por segundo. Preencha o **email de contacto**, recomendado pela política de utilização do Nominatim.
- **Google Geocoding API**: exige uma chave API Google.
- **Limitar as pesquisas a estes países**: códigos ISO separados por vírgulas, por exemplo `pt,es,br`.

## Gerir os revendedores

Menu **Rede de revendedores > Revendedores**. A ficha de um revendedor tem quatro separadores.

### Geral

- **Nome**, **tipo** (loja, distribuidor, showroom, centro de assistência, revendedor online), **logótipo** (JPG, PNG, WebP ou GIF, 2 MB no máximo).
- **Parceiro**: selo Parceiro oficial, mostrado primeiro quando nenhuma localização é indicada.
- **Telefone**, **site** e **email**: o email recebe os pedidos de contacto e nunca é mostrado quando o formulário de contacto está ativo.
- **Ligação para o produto na loja do revendedor**: opcional, adiciona um botão Comprar online. Etiquetas disponíveis: `{reference}` `{ean13}` `{upc}` `{mpn}` `{name}` `{id_product}`. Exemplo: `https://shop.example.com/search?q={ean13}`
- **Acesso à área de revendedor**: email de uma conta de cliente existente (ver Área de revendedor).

### Morada e mapa

O revendedor é colocado no mapa automaticamente ao guardar. O botão **Encontrar a posição a partir da morada** volta a lançar a geocodificação, e pode clicar no mapa ou arrastar o marcador para ajustar a posição.

### Descrição e horário

Descrição multilíngue, grelha de horários em 7 dias com dois períodos por dia (o segundo serve para a pausa de almoço), botões para copiar a segunda-feira para os outros dias e campo **Bom saber** para feriados ou encerramentos sazonais. Um dia vazio significa fechado. Os horários alimentam o selo e o filtro Aberto agora, calculados no fuso horário da loja.

### Produtos vendidos

Escolha **Toda a gama** ou uma seleção de categorias, marcas e produtos. Só os revendedores que vendem um produto aparecem no respetivo botão Onde comprar.

## Importação e exportação CSV

Botão **Importar CSV** da lista de revendedores. Formato: UTF-8, separado por ponto e vírgula, primeira linha com os nomes das colunas. O mais simples é exportar primeiro os seus revendedores para obter um ficheiro pronto a usar.

Colunas: `id;name;type;active;featured;address1;address2;postcode;city;country_iso;phone;email;website;product_url;latitude;longitude;scope;categories;manufacturers;products;description;hours;opening`

- Apenas `name` é obrigatório. Deixe `id` vazio para criar um revendedor, ou assinale a atualização dos revendedores existentes.
- `type`: retailer, distributor, showroom, service ou online. `country_iso`: código de duas letras.
- `scope`: 0 para toda a gama, 1 para as categorias, marcas e produtos indicados, separados por uma barra vertical: `3|8|12`.
- `opening`: número do dia (1 = segunda-feira) e depois os horários, dias separados por uma barra: `1=09:00-12:00,14:00-19:00/2=09:00-19:00/6=10:00-18:00`

Depois de uma importação sem coordenadas, clique em **Colocar no mapa os revendedores importados**: a geocodificação é feita em lote, a um endereço por segundo. Mantenha a página aberta durante a operação.

## Pedidos de contacto

Bloco **Pedidos de contacto** das configurações: ative o formulário em cada revendedor, o envio por email ao revendedor, uma cópia para o seu endereço, o texto da caixa de consentimento e a página da política de privacidade.

O formulário está protegido contra spam (campo armadilha, tempo mínimo, cinco envios por hora e por endereço IP). Os pedidos aparecem em **Rede de revendedores > Pedidos de contacto**, com filtros, vista detalhada, estado tratado ou por tratar e exportação CSV.

## Área de revendedor

Ative **Área de revendedor na conta de cliente** e depois introduza na ficha de um revendedor o email de uma conta de cliente existente. Depois de iniciar sessão, esse cliente vê um bloco **Área de revendedor** em A minha conta. Pode:

- alterar o telefone, o site, os horários, o campo Bom saber e a descrição na sua língua;
- ler os pedidos de contacto e marcá-los como tratados;
- ver as estatísticas dos últimos 30 dias: visitas ao site, cliques no telefone, direções, pedidos.

A morada e a posição no mapa continuam geridas pela marca. Uma mesma conta pode gerir vários revendedores.

## Páginas de revendedor e SEO

Com a opção **Uma página por revendedor**, cada revendedor (exceto os revendedores online) tem uma página do tipo `/onde-comprar/12/lumiere-co-lyon`: morada, mapa, horários, descrição, formulário de contacto e revendedores próximos. As páginas incluem dados estruturados Store com horários schema.org e um URL canónico, e redirecionam com um 301 se o nome ou a cidade mudarem. São adicionadas automaticamente ao sitemap se o módulo Google Sitemap (gsitemap) estiver instalado.

## Estatísticas

A página de configuração mostra a atividade dos últimos 30 dias: revendedores mais contactados com o detalhe dos cliques (site, telefone, direções, compra online, pedidos) e produtos com mais cliques em Onde comprar.

## Integração no tema

O botão é mostrado automaticamente através do hook `displayProductAdditionalInfo`. Para o colocar noutro sítio, use o widget:

- pesquisa de revendedores: `{widget name='dfdealerlocator'}`
- botão Onde comprar de um produto: `{widget name='dfdealerlocator' id_product=$product.id}`

## Resolução de problemas

### O mapa fica cinzento

O servidor de mosaicos está provavelmente bloqueado por uma política de segurança (CSP) ou por uma firewall. Autorize o domínio do estilo escolhido (basemaps.cartocdn.com ou tile.openstreetmap.org) ou use um servidor próprio.

### O botão Onde comprar não aparece

Verifique se o tema chama o hook `displayProductAdditionalInfo` na página do produto e se a definição Produtos abrangidos corresponde ao produto testado. Caso contrário, insira o widget no template do produto.

### Uma morada não é encontrada

Preencha pelo menos a cidade ou o código postal e o país, e clique em Encontrar a posição a partir da morada. Se a morada continuar sem ser encontrada, coloque o marcador manualmente no mapa.

### Erro 404 no diretório ou numa página de revendedor

Regenere o .htaccess guardando **Tráfego e SEO** e verifique se o URL amigável da página `module-dfdealerlocator-directory` está preenchido em cada língua.
