# DataFirefly Dealer Locator : mode catalogue et carte des revendeurs

> Ce module transforme une boutique PrestaShop 8 ou 9 en vitrine de marque : il désactive la vente en ligne sur tout ou partie du catalogue, ajoute un bouton «…

- Page: <https://www.datafirefly.com/documentation/dfdealerlocator/>
- Langue: fr
- Mis à jour le: 2026-10-07
- Autres langues: [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), [pt](https://www.datafirefly.com/pt/documentation/dfdealerlocator/index.md)
- Index: <https://www.datafirefly.com/documentation/llms.txt>

Ce module transforme une boutique PrestaShop 8 ou 9 en vitrine de marque : il désactive la vente en ligne sur tout ou partie du catalogue, ajoute un bouton « Où acheter » sur les fiches produits et publie un annuaire de revendeurs avec carte, horaires, formulaire de contact et une page par revendeur.

## Installation

1. Dans **Modules > Gestionnaire de modules**, cliquez sur **Installer un module** et envoyez le fichier ZIP.
2. Le module crée le menu **Vendre > Réseau de revendeurs** avec trois entrées : Revendeurs, Demandes de contact et Paramètres.
3. La page annuaire est créée automatiquement avec une URL traduite par langue : `/ou-acheter`, `/where-to-buy`, `/donde-comprar`, `/wo-kaufen`, etc.

Pour une mise à jour, envoyez simplement le nouveau ZIP : les scripts de mise à jour ajoutent les colonnes et les hooks manquants. Si l'URL de l'annuaire ou des pages revendeurs renvoie une erreur 404, enregistrez une fois **Paramètres de la boutique > Trafic & SEO** pour régénérer le fichier .htaccess.

Compatibilité : PrestaShop 8.0 à 9.x, multiboutique, aucune dépendance Composer. Traductions incluses en anglais, français, espagnol, allemand, italien, néerlandais, polonais et portugais.

## Configurer le mode catalogue

Ouvrez **Réseau de revendeurs > Paramètres**, bloc **Mode catalogue**. Le mode catalogue est appliqué à la volée : le réglage natif de PrestaShop n'est jamais modifié, et tout redevient normal si vous désactivez le module.

### Vente en ligne

- **Activée** : le mode catalogue est inactif, le module sert uniquement d'annuaire.
- **Désactivée pour tout le catalogue** : plus aucun produit ne peut être ajouté au panier.
- **Désactivée seulement pour la sélection** : seules les catégories, marques et produits choisis plus bas passent en mode catalogue.
- **Désactivée pour tout sauf la sélection** : la sélection reste vendue en ligne, le reste passe en mode catalogue.

### Prix, message et panier

- **Masquer les prix** : désactivé, les prix restent visibles. Vous pouvez alors afficher un libellé sous le prix, par défaut « Prix public conseillé ».
- **Message sur la fiche produit** : texte affiché au-dessus du bouton, par exemple « Ce produit est vendu exclusivement dans notre réseau de revendeurs agréés ». Laissez vide pour le masquer.
- **Rediriger le panier et la commande vers l'annuaire** : en mode catalogue complet, les pages panier et commande renvoient vers l'annuaire.

Le panier est bloqué côté serveur : un ajout forcé par une URL est refusé.

### Groupes clients exemptés

Cochez les groupes qui peuvent toujours commander en ligne. Exemple : un groupe Revendeurs qui commande son stock sur le site pendant que le public ne voit que le catalogue.

## Le bouton « Où acheter »

Bloc **Bouton Où acheter** des paramètres :

- **Produits concernés** : seulement les produits qui ne peuvent pas être achetés en ligne, ou tous les produits.
- **Texte du bouton**, traduisible.
- **Au clic** : ouvrir une fenêtre avec la carte et les revendeurs du produit, ou aller à l'annuaire filtré sur le produit.
- **Afficher la disponibilité sous le bouton** : « Disponible chez 14 revendeurs », puis le revendeur le plus proche dès que le visiteur a déjà fait une recherche localisée.
- **Lister les revendeurs en ligne** : les revendeurs de type Revendeur en ligne apparaissent à part, avec un bouton vers le produit sur leur boutique.

Le bouton ne liste que les revendeurs qui proposent le produit (voir l'onglet Produits vendus d'un revendeur). La fenêtre s'ouvre sur la dernière ville recherchée par le visiteur.

## Annuaire et carte

Bloc **Annuaire des revendeurs et carte** :

- **Texte d'introduction** affiché au-dessus de la recherche, et **couleur d'accent** des boutons, marqueurs et regroupements.
- **Centre et zoom par défaut** de la carte, **unité** (km ou miles), **choix de rayons**, **rayon par défaut** (0 = pas de limite) et **nombre maximum de résultats**.
- **Style de carte** : CARTO Voyager, CARTO Positron, OpenStreetMap ou serveur de tuiles personnalisé (URL en https contenant {z}, {x} et {y}).
- **Demander avant de charger la carte** : pour le RGPD, le serveur de tuiles ne reçoit l'adresse IP du visiteur qu'après un clic.
- **Regrouper les marqueurs proches** et **une couleur de marqueur par type**, avec légende sur la carte.
- **Liste complète des revendeurs par pays** sous la carte, lisible par les moteurs de recherche.
- **Une page par revendeur** : voir plus bas.

Le visiteur cherche par ville ou code postal, ou utilise sa position. Il peut filtrer par type de revendeur et cocher « Ouvert maintenant ». Sur mobile, un bouton bascule entre la liste et la carte. La carte Leaflet est hébergée dans le module : aucune clé API n'est nécessaire.

## Géocodage

Le géocodage transforme une adresse ou une ville en coordonnées. Les résultats sont mis en cache en base.

- **OpenStreetMap Nominatim** : gratuit, limité à une requête par seconde. Renseignez l'**email de contact**, recommandé par la politique d'utilisation de Nominatim.
- **Google Geocoding API** : nécessite une clé API Google.
- **Limiter les recherches à ces pays** : codes ISO séparés par des virgules, par exemple `fr,be,ch`.

## Gérer les revendeurs

Menu **Réseau de revendeurs > Revendeurs**. La fiche d'un revendeur comporte quatre onglets.

### Général

- **Nom**, **type** (magasin, distributeur, showroom, centre de service, revendeur en ligne), **logo** (JPG, PNG, WebP ou GIF, 2 Mo maximum).
- **Partenaire** : badge « Partenaire officiel », mis en avant quand aucune localisation n'est donnée.
- **Téléphone**, **site web** et **email** : l'email reçoit les demandes de contact et n'est jamais affiché quand le formulaire de contact est activé.
- **Lien produit sur la boutique du revendeur** : facultatif, ajoute un bouton « Acheter en ligne ». Balises disponibles : `{reference}` `{ean13}` `{upc}` `{mpn}` `{name}` `{id_product}`. Exemple : `https://shop.example.com/search?q={ean13}`
- **Accès à l'espace revendeur** : email d'un compte client existant (voir Espace revendeur).

### Adresse et carte

Le revendeur est placé sur la carte automatiquement à l'enregistrement. Le bouton **Trouver la position depuis l'adresse** relance le géocodage, et vous pouvez cliquer sur la carte ou déplacer le marqueur pour ajuster la position.

### Description et horaires

Description multilingue, grille d'horaires sur 7 jours avec deux créneaux par jour (le second sert à la pause de midi), boutons de copie du lundi sur les autres jours, et champ **Bon à savoir** pour les jours fériés ou fermetures saisonnières. Un jour vide signifie fermé. Les horaires alimentent le badge et le filtre « Ouvert maintenant », calculés dans le fuseau horaire de la boutique.

### Produits vendus

Choisissez **Toute la gamme** ou une sélection de catégories, marques et produits. Seuls les revendeurs qui proposent un produit apparaissent dans son bouton « Où acheter ».

## Import et export CSV

Bouton **Importer un CSV** de la liste des revendeurs. Format : UTF-8, séparateur point-virgule, première ligne avec les noms de colonnes. Le plus simple est d'exporter d'abord vos revendeurs pour obtenir un fichier prêt à l'emploi.

Colonnes : `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`

- Seul `name` est obligatoire. Laissez `id` vide pour créer un revendeur, ou cochez la mise à jour des revendeurs existants.
- `type` : retailer, distributor, showroom, service ou online. `country_iso` : code à deux lettres.
- `scope` : 0 pour toute la gamme, 1 pour les catégories, marques et produits listés, séparés par une barre verticale : `3|8|12`.
- `opening` : numéro du jour (1 = lundi) puis créneaux, jours séparés par une barre oblique : `1=09:00-12:00,14:00-19:00/2=09:00-19:00/6=10:00-18:00`

Après un import sans coordonnées, cliquez sur **Placer les revendeurs importés sur la carte** : le géocodage se fait par lots, au rythme d'une adresse par seconde. Gardez la page ouverte pendant l'opération.

## Demandes de contact

Bloc **Demandes de contact** des paramètres : activez le formulaire sur chaque revendeur, l'envoi par email au revendeur, une copie à votre adresse, le texte de la case de consentement et la page de politique de confidentialité.

Le formulaire est protégé contre le spam (champ piège, délai minimum, cinq envois par heure et par adresse IP). Les demandes sont listées dans **Réseau de revendeurs > Demandes de contact**, avec filtre, vue détaillée, statut traité ou à traiter et export CSV.

## Espace revendeur

Activez **Espace revendeur dans le compte client**, puis saisissez dans la fiche d'un revendeur l'email d'un compte client existant. Une fois connecté, ce client voit une tuile **Espace revendeur** dans Mon compte. Il peut :

- modifier son téléphone, son site, ses horaires, son « Bon à savoir » et sa description dans sa langue ;
- lire ses demandes de contact et les marquer comme traitées ;
- voir ses statistiques sur 30 jours : visites du site, clics sur le téléphone, itinéraires, demandes.

L'adresse et la position sur la carte restent gérées par la marque. Un même compte peut gérer plusieurs revendeurs.

## Pages revendeurs et référencement

Avec l'option **Une page par revendeur**, chaque revendeur (hors revendeurs en ligne) a une page du type `/ou-acheter/12/lumiere-co-lyon` : adresse, carte, horaires, description, formulaire de contact et revendeurs proches. Les pages contiennent des données structurées Store avec les horaires schema.org, une URL canonique, et redirigent en 301 si le nom ou la ville changent. Elles sont ajoutées automatiquement au sitemap si le module Google Sitemap (gsitemap) est installé.

## Statistiques

La page de configuration affiche l'activité sur 30 jours : revendeurs les plus contactés avec le détail des clics (site, téléphone, itinéraire, achat en ligne, demandes) et produits avec le plus de clics sur « Où acheter ».

## Intégration au thème

Le bouton s'affiche automatiquement via le hook `displayProductAdditionalInfo`. Pour le placer ailleurs, utilisez le widget :

- champ de recherche de revendeurs : `{widget name='dfdealerlocator'}`
- bouton « Où acheter » d'un produit : `{widget name='dfdealerlocator' id_product=$product.id}`

## Dépannage

### La carte reste grise

Le serveur de tuiles est probablement bloqué par une politique de sécurité (CSP) ou un pare-feu. Autorisez le domaine du style choisi (basemaps.cartocdn.com ou tile.openstreetmap.org) ou utilisez un serveur personnalisé.

### Le bouton « Où acheter » n'apparaît pas

Vérifiez que votre thème appelle le hook `displayProductAdditionalInfo` sur la fiche produit, et que le réglage Produits concernés correspond au produit testé. Sinon, insérez le widget dans le template produit.

### Une adresse n'est pas trouvée

Complétez au moins la ville ou le code postal et le pays, puis cliquez sur Trouver la position depuis l'adresse. Si l'adresse reste introuvable, placez le marqueur à la main sur la carte.

### Erreur 404 sur l'annuaire ou une page revendeur

Régénérez le .htaccess en enregistrant **Trafic & SEO**, et vérifiez que l'URL simplifiée de la page `module-dfdealerlocator-directory` est renseignée dans chaque langue.
