- Un formulaire par sujet
- Neuf types de champs
- Des contrôles sur chaque champ
- Les conditions : n’afficher un champ que s’il est utile
- Des fichiers en sécurité
- Le routage : chaque demande à la bonne équipe
- Un accusé de réception toujours professionnel
- Des demandes conservées et exportées
- RGPD et confidentialité
- Anti-spam
- Groupes de clients, langues et plusieurs boutiques
- Sur téléphone
- 1. Créer le formulaire
- 2. Ajouter les champs et leurs conditions
- 3. Router la demande et écrire l’accusé de réception
- 4. Suivre les demandes
- 5. Protéger le formulaire et régler la confidentialité
- Licence
- SAV : les bonnes questions pour chaque motif
- Demandes de devis B2B
- Un sujet réservé aux membres
- Un formulaire pour plusieurs boutiques
- Recueillir des documents
- À quoi sert un formulaire de contact « dynamique » sur PrestaShop ?
- Peut-on vraiment créer un formulaire différent pour chaque sujet de contact ?
- Quels types de champs personnalisés peut-on ajouter ?
- Comment fonctionne la logique conditionnelle (champs qui apparaissent ou disparaissent) ?
- Peut-on réserver certains formulaires aux clients B2B (groupes de clients) ?
- Comment le module aide-t-il à respecter le RGPD ?
- Le client reçoit-il une confirmation automatique après l’envoi ?
- Le module est-il protégé contre le spam (sans CAPTCHA) ?
- Comment déployer la même configuration sur plusieurs boutiques (ou environnements) ?
- Compatibilité, prérequis et désinstallation : à quoi faut-il faire attention ?
- Chaque demande peut-elle aller à la bonne équipe ?
- Où sont conservées les demandes, et puis-je les exporter ?
- Que se passe-t-il si ma licence expire ?
- La page de contact affiche un formulaire simple à la place de mes formulaires
- La page de contact n’affiche rien du tout
- Mes e-mails n’arrivent pas
- Un fichier est refusé
- Un client est informé qu’il a envoyé trop de demandes
- Le captcha n’apparaît pas
- J’ai modifié la surcharge de la version 1.0.0
Formulaire de contact dynamique pour PrestaShop : un formulaire par sujet — configuration et guide
Dynamic Contact Form transforme la page de contact de PrestaShop en un formulaire par sujet : le client choisit « Service après-vente » ou « Demande de devis » et ne voit que les questions qui conviennent, avec des champs qui apparaissent ou disparaissent selon ses réponses. Chaque demande arrive à la bonne équipe, est conservée dans un tableau que vous pouvez filtrer et exporter, et ouvre toujours une conversation dans le service client natif.
Ce guide explique comment installer le module, construire votre premier formulaire, router les demandes, protéger le formulaire du spam et résoudre les cas courants.
Points forts :
- Un formulaire par sujet de la page de contact, avec ses propres champs, destinataires et accusé de réception
- Neuf types de champs (texte, zone de texte, liste, boutons radio, cases à cocher, case à cocher, date, fichier, bloc d’information), avec texte indicatif, aide et contrôles
- Des conditions qui fonctionnent : un champ n’apparaît que si la réponse à un autre champ le demande, dans le navigateur comme sur le serveur
- Routage : copie et copie cachée, un destinataire choisi selon la réponse à une liste, un objet d’e-mail avec variables
- Demandes conservées dans le back-office : filtres, fichiers à télécharger, export CSV, suppression automatique
- Conversation dans le SAV comme avec le formulaire natif, et un accusé de réception qui ne reprend jamais le message du client
- Consentement RGPD, anti-spam (limites, durée de remplissage, Turnstile ou reCAPTCHA facultatif) et fichiers protégés
- PrestaShop 1.7.8, 8.0+ et 9.0+ ; PHP 7.4 minimum ; administration en français, anglais, espagnol, italien et polonais
Découvrir le module et ses formules
Présentation
Le formulaire de contact natif de PrestaShop a les mêmes champs pour tous les sujets. Un client qui a une panne, un client qui veut un devis et un client qui s’interroge sur la livraison remplissent le même formulaire, et votre équipe répond pour demander le numéro de commande, la quantité ou une photo. Avec Dynamic Contact Form :
- Chaque sujet de la page de contact (Paramètres de la boutique > Contact > Contacts) a son propre formulaire : les champs dont vous avez besoin pour ce type de demande.
- Les champs suivent les réponses : le numéro de commande et la photo du problème apparaissent pour une panne, la société apparaît quand le client demande une facture.
- La demande va aux bonnes personnes : l’adresse du sujet, une copie, et un destinataire choisi selon la réponse à une liste.
- La demande est conservée : une conversation dans le service client, et une ligne dans le module avec ses réponses et ses fichiers, prête à être filtrée et exportée.
Le module n’ajoute rien à la page en dehors du formulaire. Le thème dessine la page, le module dessine le formulaire dans sa zone de contact. Pour un sujet sans formulaire, le module affiche un formulaire simple (e-mail, message, pièce jointe) : aucun sujet ne reste vide.
Un formulaire par sujet, avec des champs qui apparaissent au bon moment
Fonctionnalités
Un formulaire par sujet
Tous les sujets de la boutique sont proposés dans la liste de la page de contact. Choisissez un sujet : son formulaire apparaît, avec la courte description du sujet sous la liste. Un sujet qui n’a pas de formulaire affiche le formulaire simple ; un formulaire que vous désactivez rend son sujet au formulaire simple.
Un autre sujet, un autre formulaire
Neuf types de champs
- Texte (une ligne) et Texte (plusieurs lignes), avec un texte indicatif et une aide
- Liste déroulante, Boutons radio et Plusieurs cases à cocher, avec les réponses que vous écrivez (une par ligne si vous les collez)
- Case à cocher, pour une question à réponse oui ou non
- Date
- Fichier : vous choisissez les types acceptés, la taille maximale et le nombre de fichiers
- Bloc d’information : un titre et un texte (HTML autorisé) que le client lit, comme « Nous répondons sous 24 heures »
Chaque champ peut être obligatoire, a un libellé, un texte indicatif et une aide dans chaque langue de la boutique, et une clé (tirée du libellé) qui nomme le champ dans l’export CSV et dans les e-mails.
Des contrôles sur chaque champ
Un champ texte peut être contrôlé comme une adresse e-mail, une adresse web, un numéro de téléphone, un nombre ou avec votre propre expression régulière (par exemple ^[0-9]{5}$ pour un code postal français ; un champ d’essai dans l’éditeur vous dit si une valeur convient). Le client voit le message près du champ, dans sa langue, et conserve ce qu’il a saisi. Le navigateur contrôle le formulaire avant l’envoi ; le serveur le contrôle de nouveau à la réception.
Les conditions : n’afficher un champ que s’il est utile
Une condition porte sur un autre champ du même formulaire :
- une liste, des boutons radio ou plusieurs cases à cocher : la réponse est l’une de (ou n’est aucune de) celles que vous cochez
- une case à cocher : elle est cochée (ou n’est pas cochée)
- un champ texte : il est égal à une valeur, n’est pas égal à elle ou la contient
Un champ masqué n’est ni obligatoire ni enregistré. Une condition n’a qu’un niveau : un champ qui dépend d’un autre ne peut pas être testé à son tour par un troisième. Le navigateur et le serveur appliquent les mêmes règles.
Des fichiers en sécurité
Les fichiers envoyés avec une demande sont inspectés d’après leur contenu, conservés en dehors du dossier public de la boutique sous des noms aléatoires, et proposés à votre équipe en téléchargement (ils ne s’ouvrent jamais dans le navigateur). Ils sont joints à l’e-mail de l’équipe jusqu’à la taille que vous fixez ; les fichiers plus gros restent dans le back-office, où la demande y renvoie.
Le routage : chaque demande à la bonne équipe
- La demande va à l’adresse du sujet (Paramètres de la boutique > Contact > Contacts)
- Un formulaire peut ajouter une copie et une copie cachée, toujours
- Des routes choisissent les destinataires selon la réponse à une liste : « quand la réponse à Motif est Retour, envoyer la demande à retours@… à la place de l’adresse du sujet », ou « en plus de » l’adresse du sujet
- L’objet de l’e-mail accepte des variables :
{firstname},{lastname},{email},{order_reference},{reference},{subject},{shop_name}et{field:clé}pour la réponse à un champ
Un accusé de réception toujours professionnel
Activez l’accusé de réception d’un formulaire : le client reçoit un e-mail juste après l’envoi, avec l’objet et le texte que vous écrivez dans chaque langue (mêmes variables). Il ne reprend jamais ce que le client a écrit.
Des demandes conservées et exportées
Chaque demande devient une conversation dans Service client > Service client, avec les réponses écrites dans le message et un lien vers la demande. Si vous conservez les demandes dans le back-office, l’onglet Demandes les liste : filtrez par sujet, date ou e-mail, ouvrez une demande pour lire ses réponses et télécharger ses fichiers, et exportez en CSV (une colonne par champ) pour Excel, LibreOffice ou Google Sheets. Un client qui répond depuis votre e-mail poursuit la même conversation.
RGPD et confidentialité
Chaque formulaire peut demander un consentement avec votre propre texte (HTML autorisé, par exemple un lien vers votre politique de confidentialité) ou utiliser le consentement du module RGPD officiel. La date du consentement est conservée avec la demande. Les demandes peuvent être supprimées automatiquement après un nombre de jours, et le module RGPD officiel peut exporter ou effacer les demandes d’un client.
Anti-spam
Une limite de demandes par heure et par adresse et par heure et par e-mail, une durée minimale de remplissage, une limite de liens, un champ piège invisible et un jeton de sécurité. Vous pouvez ajouter Cloudflare Turnstile ou Google reCAPTCHA avec vos propres clés. Un point d’accroche, actionWeprestaDcfSubmitBefore, permet à un développeur d’accepter ou de refuser une demande.
Groupes de clients, langues et plusieurs boutiques
Limitez un formulaire à des groupes de clients (visiteurs, invités, clients ou vos propres groupes) : les autres ne voient pas le sujet. Chaque texte existe dans chaque langue de la boutique. Dans une installation multiboutique, chaque boutique a son propre formulaire pour chaque sujet. Un formulaire peut être dupliqué, exporté dans un fichier JSON et importé dans une autre boutique (il arrive désactivé).
Sur téléphone
Le formulaire suit la mise en page de votre thème : les libellés sont au-dessus des champs, le clavier du téléphone convient à un e-mail, à un numéro de téléphone ou à un nombre, et les messages restent près du champ.
Le même formulaire sur téléphone
Prérequis
- PrestaShop : 1.7.8, 8.0+ ou 9.0+. PrestaShop 1.7.7 et les versions antérieures ne sont pas prises en charge.
- PHP : 7.4 minimum, avec les extensions
curl,jsonetmbstring. L’extensionfileinfoest recommandée : sans elle, seule l’extension d’un fichier est contrôlée, pas son contenu. - Thème : un thème fourni avec PrestaShop, ou un thème enfant qui garde la page de contact de son parent. Le Diagnostic vous dit ce que fait votre thème.
- HTTPS recommandé.
Installation
Méthode 1 — depuis le back-office (recommandée)
- Téléchargez l’archive depuis votre espace client WePresta
- Allez dans Modules > Gestionnaire de modules
- Cliquez sur Installer un module et sélectionnez l’archive ZIP
- Attendez la fin de l’installation, puis cliquez sur Configurer et activez votre licence
Méthode 2 — par FTP
- Décompressez l’archive
- Envoyez le dossier
wepresta_dynamic_contact_form/dans/modules/ - Dans le back-office : Modules > Gestionnaire de modules, cherchez « Dynamic Contact Form » et cliquez sur Installer, puis Configurer
Ce que fait l’installation
- Elle désactive le formulaire de contact natif, pour que le module serve la page de contact ; désinstaller le module le réactive
- Elle crée les tables des formulaires et des demandes, un dossier pour les fichiers en dehors du dossier public, et l’entrée de menu
- Elle enregistre les points d’accroche du module ; elle ne surcharge aucune classe de la boutique
- Si l’installation échoue, ce qu’elle avait créé est supprimé
Mise à jour depuis la version 1.0.0
- Vos formulaires et leurs champs sont conservés, dans toutes les langues
- Les textes et les expressions régulières abîmés par la version 1.0.0 (apostrophes précédées d’une barre oblique inverse, par exemple) sont réparés
- Les conditions sont converties pour suivre les réponses d’elles-mêmes, dans toutes les langues
- La surcharge de la page de contact installée par la version 1.0.0 est supprimée ; si vous l’avez modifiée à la main, le module la laisse et le Diagnostic vous le dit
- Les bibliothèques et les fichiers de développement livrés avec la version 1.0.0 (jusqu’à 150 Mo) sont supprimés : l’archive passe de 28 Mo à environ 340 Ko
- Si les CSS et JavaScript du thème sont combinés, videz le cache de PrestaShop après la mise à jour
Construire votre premier formulaire en dix minutes
Ouvrez Modules > Gestionnaire de modules > Dynamic Contact Form > Configurer : la page propose Gérer les formulaires et Ouvrir les demandes, et chaque page du module a trois onglets, Formulaires, Demandes et Réglages.
1. Créer le formulaire
- Dans Formulaires, cliquez sur Ajouter un formulaire et choisissez son sujet de contact (créez les sujets dont vous avez besoin dans Paramètres de la boutique > Contact > Contacts).
- Laissez Actif activé, choisissez les groupes de clients si le sujet est réservé, et cochez Référence de commande si les clients connectés peuvent indiquer la commande concernée.
- Écrivez le texte du consentement si le formulaire a besoin d’une case de consentement, puis enregistrez : le panneau Champs apparaît.
Chaque champ et sa condition d’un coup d’œil
Le tableau des champs montre, pour chacun, son type, sa clé, s’il est obligatoire et sa condition écrite en toutes lettres : « Affiché si « Motif » est l’une de Panne, Retour ».
2. Ajouter les champs et leurs conditions
- Cliquez sur Ajouter un champ, choisissez le type, écrivez le libellé (la barre de langues de la fenêtre change la langue), le texte indicatif et l’aide.
- Pour une liste, des boutons radio ou des cases à cocher, ajoutez les réponses une par une, ou collez-les une par ligne et cliquez sur Ajouter ces réponses.
- Dans Contrôle, choisissez le type de valeur attendu (e-mail, adresse web, téléphone, nombre, votre propre modèle).
- Dans Condition, choisissez un autre champ du formulaire et les réponses (ou l’état de la case) pour lesquelles ce champ doit apparaître.
Modifier un champ : type, textes, contrôle et condition
Exemple pour un formulaire de SAV : une liste Motif (Panne, Retour, Autre) ; un champ Numéro de commande affiché si le motif est l’un de Panne ou Retour ; un fichier Photo du problème affiché si le motif est Panne ; une case Je souhaite une facture qui affiche un champ Société.
3. Router la demande et écrire l’accusé de réception
Dans le panneau E-mail à votre équipe, ajoutez les adresses dans Copie à et Copie cachée à, l’Objet de l’e-mail (avec variables) et les Routes : choisissez un champ liste, les réponses et les destinataires, et si la demande part à la place de ou en plus de l’adresse du sujet. Puis, dans Accusé de réception au client, activez-le et écrivez l’objet et le texte dans chaque langue.
Envoyer chaque demande à la bonne équipe
Enregistrez, puis cliquez sur Voir sur la boutique : choisissez le sujet sur la page de contact et essayez le formulaire.
4. Suivre les demandes
Chaque demande apparaît dans l’onglet Demandes : ouvrez-la pour lire les réponses et télécharger les fichiers. Pour exporter, choisissez un sujet et des dates dans Exporter en CSV, puis cliquez sur Exporter.
Les demandes conservées dans un tableau et exportées en CSV
5. Protéger le formulaire et régler la confidentialité
Ouvrez l’onglet Réglages : le panneau Anti-spam contient les limites (par défaut 10 demandes par heure pour une adresse, 5 pour un e-mail, 3 secondes minimum pour remplir le formulaire, 3 liens dans un message), le captcha facultatif et ses clés, et ce qu’il faut faire si le captcha est injoignable (accepter la demande ou la refuser). Le panneau Demandes, fichiers et confidentialité permet de conserver les demandes dans le back-office, de les supprimer après un nombre de jours (0 les garde jusqu’à ce que vous les supprimiez), de fixer la taille maximale d’un fichier, les types de fichiers acceptés et la taille des fichiers joints à l’e-mail de votre équipe.
Réglages anti-spam, conservation et confidentialité
Licence
Après l’installation, Configurer affiche le formulaire d’activation : saisissez la clé de licence et le secret de licence disponibles dans votre espace client WePresta. La licence peut être désactivée sur un domaine depuis la même page. Quand un abonnement expire, un délai de grâce de sept jours évite toute interruption ; ensuite la page de contact garde un formulaire simple (sujet, e-mail, message, pièce jointe) qui crée toujours la conversation, jusqu’au renouvellement de la licence. Le module s’aperçoit tout seul du renouvellement (il interroge de nouveau le serveur de licences au plus une fois par heure) et chaque fois que vous ouvrez ses pages dans le back-office. Vos formulaires et leurs données sont conservés.
Cas d’usage courants
SAV : les bonnes questions pour chaque motif
Un formulaire avec une liste Motif : une panne demande le numéro de commande et une photo, un retour demande le numéro de commande, « Autre » ne demande rien de plus. Votre équipe reçoit des demandes complètes et envoie les retours à l’équipe des retours grâce à une route.
Demandes de devis B2B
Un sujet Demande de devis avec société, e-mail de facturation (contrôlé comme un e-mail), site web (contrôlé comme une adresse web), téléphone, quantité (contrôlée comme un nombre) et échéance. Réservez-le à votre groupe de clients professionnels si vous le souhaitez.
Un sujet réservé aux membres
Limitez un formulaire à un groupe de clients : seuls ces clients voient le sujet sur la page de contact.
Un formulaire pour plusieurs boutiques
Exportez le formulaire dans un fichier JSON et importez-le dans une autre boutique : champs, conditions, réponses et textes viennent avec lui, désactivés jusqu’à ce que vous les vérifiiez.
Recueillir des documents
Ajoutez un champ Fichier avec les types que vous acceptez (par exemple pdf,png,jpg), la taille maximale et le nombre de fichiers : les fichiers sont conservés en dehors du dossier public et votre équipe les télécharge depuis la demande.
FAQ
À quoi sert un formulaire de contact « dynamique » sur PrestaShop ?
Le formulaire natif est souvent trop générique : les mêmes champs pour tous les sujets, peu de qualification et de nombreux échanges avec le service client. Le module le remplace par un formulaire par sujet (SAV, devis, support technique, partenariat…), avec des champs adaptés à la demande qui n’apparaissent que lorsqu’ils sont utiles, pour que chaque message arrive complet et chez la bonne équipe.
Peut-on vraiment créer un formulaire différent pour chaque sujet de contact ?
Oui. Choisissez un sujet défini dans Paramètres de la boutique > Contact > Contacts, créez son formulaire dans le module (Formulaires) et ajoutez ses champs : chaque sujet a ses propres champs et options, ses propres destinataires et son propre accusé de réception. Un sujet sans formulaire affiche un formulaire simple (e-mail, message, pièce jointe) : aucun sujet ne reste vide.
Quels types de champs personnalisés peut-on ajouter ?
Neuf types : texte sur une ligne, texte sur plusieurs lignes, liste déroulante, boutons radio, plusieurs cases à cocher, case à cocher, date, fichier et bloc d’information. Un champ texte peut être contrôlé comme une adresse e-mail, une adresse web, un numéro de téléphone, un nombre ou avec votre propre modèle. Chaque champ peut être obligatoire, avoir un texte indicatif et une aide, et son libellé, ses réponses et ses textes existent dans chaque langue de la boutique.
Comment fonctionne la logique conditionnelle (champs qui apparaissent ou disparaissent) ?
Un champ n’est affiché que si un autre champ du même formulaire remplit une condition : la réponse à une liste, des boutons radio ou des cases à cocher est l’une des réponses choisies (ou aucune d’elles), une case à cocher est cochée (ou non), ou un champ texte est égal à une valeur, différent d’elle ou la contient. Les règles sont les mêmes dans le navigateur et sur le serveur, et un champ masqué n’est ni obligatoire ni enregistré. Les conditions n’ont qu’un niveau : un champ conditionnel ne peut pas être le parent d’un autre.
Peut-on réserver certains formulaires aux clients B2B (groupes de clients) ?
Oui. Limitez un formulaire à un ou plusieurs groupes de clients : seuls leurs clients voient le sujet. C’est utile pour un formulaire « devis pro », un formulaire revendeur ou un sujet réservé aux membres, sans créer plusieurs pages de contact.
Comment le module aide-t-il à respecter le RGPD ?
Chaque formulaire peut comporter une case de consentement avec votre propre texte (HTML autorisé, par exemple un lien vers la politique de confidentialité) ou utiliser le consentement du module RGPD officiel. La date du consentement est conservée avec la demande. Les demandes peuvent être supprimées automatiquement après le nombre de jours de votre choix, et exportées ou effacées pour un client par le module RGPD officiel.
Le client reçoit-il une confirmation automatique après l’envoi ?
Oui, si vous l’activez pour le formulaire : un accusé de réception part juste après la demande, avec un objet et un texte de votre choix dans chaque langue et des variables comme {firstname}, {reference} ou la réponse à un champ. Il ne reprend jamais ce que le client a écrit. La demande crée toujours une conversation dans Service client > Service client, comme le formulaire natif.
Le module est-il protégé contre le spam (sans CAPTCHA) ?
Oui : une limite de demandes par heure pour chaque adresse et chaque e-mail (conservée en base de données, un robot sans cookie ne peut donc pas la contourner), une durée minimale de remplissage, une limite de liens, un champ piège invisible et un jeton de sécurité. Si vous voulez aller plus loin, un captcha facultatif (Cloudflare Turnstile ou Google reCAPTCHA, avec vos propres clés) peut être activé.
Comment déployer la même configuration sur plusieurs boutiques (ou environnements) ?
Chaque boutique a ses propres formulaires. Pour réutiliser un formulaire, exportez-le dans un fichier JSON (champs, conditions, réponses et textes) et importez-le dans une autre boutique : le formulaire importé arrive désactivé, pour que vous le vérifiiez avant de l’activer. C’est utile pour une agence (préproduction → production) et pour sauvegarder vos formulaires avant une mise à jour.
Compatibilité, prérequis et désinstallation : à quoi faut-il faire attention ?
PrestaShop 1.7.8, 8.0+ et 9.0+ avec PHP 7.4 ou supérieur ; HTTPS recommandé. PrestaShop 1.7.7 et les versions antérieures ne sont pas prises en charge. Le module désactive le formulaire de contact natif à l’installation et le réactive à la désinstallation. Désinstaller supprime les formulaires, les demandes et leurs fichiers : exportez d’abord vos formulaires (JSON) et vos demandes (CSV).
Chaque demande peut-elle aller à la bonne équipe ?
Oui. En plus de l’adresse du sujet (Paramètres de la boutique > Contact > Contacts), un formulaire peut envoyer une copie et une copie cachée à d’autres adresses, et des routes choisissent les destinataires selon la réponse à une liste : par exemple une demande « Retour » va à l’équipe des retours à la place de l’adresse habituelle, et une demande « Panne » est aussi mise en copie du support. L’objet de l’e-mail accepte des variables.
Où sont conservées les demandes, et puis-je les exporter ?
Chaque demande crée une conversation dans Service client et, si vous conservez les demandes dans le back-office, une ligne dans l’onglet Demandes du module : filtrez par sujet, date ou e-mail, lisez les réponses, téléchargez les fichiers et exportez en CSV (une colonne par champ) pour Excel, LibreOffice ou Google Sheets. Vous pouvez aussi programmer une suppression automatique après un nombre de jours.
Que se passe-t-il si ma licence expire ?
La page de contact ne reste jamais vide : elle garde un formulaire simple (sujet, e-mail, message, pièce jointe) qui crée toujours la conversation dans le SAV. Vos formulaires et leurs données sont conservés et reviennent au renouvellement de la licence : le module s’en aperçoit tout seul (il interroge de nouveau le serveur de licences au plus une fois par heure) et chaque fois que vous ouvrez ses pages dans le back-office. Un délai de grâce de sept jours évite une interruption le jour de l’échéance.
Dépannage
La page de contact affiche un formulaire simple à la place de mes formulaires
Vérifiez dans cet ordre : la licence (Configurer affiche son état ; un formulaire simple est le comportement sans licence active) ; le formulaire (est-il activé, et appartient-il à cette boutique ?) ; le sujet (un formulaire est servi pour le sujet auquel il appartient) ; les groupes de clients du formulaire (un visiteur ne voit pas un formulaire réservé à un groupe) ; le Diagnostic en bas de la page de réglages.
La page de contact n’affiche rien du tout
Votre thème n’affiche peut-être pas ce que les modules placent dans la zone de contact. Le Diagnostic dit ce que fait votre thème. Sur PrestaShop 1.7, le module sert lui-même le gabarit de contact du thème classique ; un thème enfant qui remplace le gabarit de contact doit garder la zone de contact.
Mes e-mails n’arrivent pas
Vérifiez les réglages d’e-mail de PrestaShop (Paramètres avancés > E-mail) : le module demande à PrestaShop d’envoyer les messages, et le Diagnostic vous prévient quand l’envoi est désactivé. Les demandes elles-mêmes restent dans le service client et dans l’onglet Demandes.
Un fichier est refusé
L’extension doit figurer parmi les types acceptés, le fichier respecter la taille maximale, et son contenu correspondre à son type lorsque l’extension fileinfo est disponible. Les programmes et les pages web ne sont jamais acceptés.
Un client est informé qu’il a envoyé trop de demandes
Les limites par heure pour une adresse et pour un e-mail vous protègent des robots. Augmentez-les dans Réglages > Anti-spam si plusieurs vrais clients partagent une adresse (une entreprise, une école).
Le captcha n’apparaît pas
Les deux clés (clé de site et clé secrète) doivent être enregistrées, et votre politique de sécurité de contenu doit autoriser le fournisseur (Cloudflare Turnstile ou Google reCAPTCHA).
J’ai modifié la surcharge de la version 1.0.0
La mise à jour laisse une surcharge que vous avez modifiée à la main et le Diagnostic la mentionne. Le module n’en a plus besoin : comparez vos changements, puis supprimez le fichier ContactController.php du dossier override/controllers/front/ et videz le cache.
Changelog
Version 2.0.0
Nouveautés
- Des conditions qui fonctionnent : un champ n’est affiché que si la réponse à un autre champ est l’une des réponses choisies (ou aucune d’elles), si une case est cochée, ou si un texte correspond ; le navigateur et le serveur appliquent les mêmes règles.
- De nouveaux types de champs : boutons radio, plusieurs cases à cocher et bloc d’information, avec un texte indicatif et une aide sous chaque champ.
- Des contrôles pour l’e-mail, l’adresse web, le numéro de téléphone, le nombre ou votre propre modèle, avec un message près du champ ; ce que le client a saisi est conservé après une erreur.
- Un champ fichier qui fonctionne : vous choisissez les types, la taille et le nombre de fichiers, et les fichiers sont conservés en dehors du dossier public de la boutique.
- Le routage des demandes : une copie et une copie cachée par formulaire, un destinataire choisi selon la réponse à une liste, et un objet d’e-mail avec variables.
- Un accusé de réception par formulaire, dans chaque langue, qui ne reprend jamais le message libre du client.
- Les demandes conservées dans le back-office, dans un tableau avec filtres, fichiers à télécharger et export CSV.
- La suppression automatique des demandes après le nombre de jours de votre choix, et l’export et l’effacement par le module RGPD officiel.
- La conversation du service client renvoie vers la demande, et un client qui répond depuis votre e-mail poursuit la même conversation.
- Un anti-spam par adresse et par e-mail, une durée minimale de remplissage, une limite de liens et un Cloudflare Turnstile ou Google reCAPTCHA facultatif.
- Un point d’accroche pour les développeurs, actionWeprestaDcfSubmitBefore, pour accepter ou refuser une demande avant son envoi.
- Un diagnostic avec un bouton Copier pour le support, et un mode débogage.
- Le module fonctionne sur PrestaShop 1.7.8, 8.0+ et 9.0+ avec PHP 7.4 minimum, dans une seule archive d’environ 340 Ko.
- L’administration est traduite en français, anglais, espagnol, italien et polonais.
Améliorations
- Un sujet sans formulaire affiche un formulaire simple (e-mail, message, pièce jointe) au lieu de rien, et un formulaire désactivé rend son sujet au formulaire simple.
- Un tableau des champs avec la condition écrite en toutes lettres, une fenêtre de modification d’un champ avec une barre de langues, des réponses collées une par ligne et un interrupteur d’état sur chaque formulaire.
- Dupliquer un formulaire, l’exporter dans un fichier JSON, l’importer (il arrive désactivé) et supprimer plusieurs formulaires à la fois.
- Un formulaire par sujet et par boutique dans une installation multiboutique.
- La page de contact du thème classique de PrestaShop 1.7 affiche le formulaire sans aucune surcharge de la boutique.
- La page de contact charge ses formulaires en quelques requêtes groupées, quel que soit le nombre de champs.
- Le formulaire de contact natif est réactivé à la désinstallation du module, et une installation qui échoue ne laisse rien derrière elle.
- L’archive passe de 28 Mo à environ 340 Ko.
Corrections
- La page de contact ne se retrouve plus sans aucun formulaire lorsque la licence pose problème.
- Les pages d’administration ne plantent plus sur PrestaShop 1.7 ni sous PHP 7.
- Les conditions peuvent être enregistrées et appliquées, et l’interrupteur Actif d’un formulaire fonctionne.
- Un champ fichier obligatoire ne rend plus l’envoi impossible, et un fichier n’est plus perdu.
- Sur PrestaShop 8, Supprimer la sélection supprime les formulaires cochés et non plus le premier formulaire.
- Les apostrophes des libellés ne gagnent plus une barre oblique inverse à chaque enregistrement, et un modèle comme ^[0-9]{5}$ ne refuse plus toutes les saisies.
- Un jeton de sécurité expiré n’enferme plus le client dans une boucle, et un message long ne se termine plus sur une page d’erreur.
- Un employé sans le droit ne peut plus modifier les formulaires, et l’ordre de tri des listes ne peut plus être détourné.
- Les messages affichés aux clients, l’en-tête de la conversation et les objets d’e-mail sont traduits.
Après la mise à jour : vos formulaires et leurs champs sont conservés, les textes et modèles abîmés par la version 1.0.0 sont réparés, les conditions sont converties, la surcharge installée par la version 1.0.0 est supprimée (une surcharge modifiée à la main est conservée et le Diagnostic vous le dit) et les bibliothèques qu’elle embarquait sont supprimées. Si les CSS et JavaScript du thème sont combinés, videz le cache de PrestaShop.
Version 1.0.0
- Première version
Support
Pour toute aide, contactez-nous depuis votre espace client WePresta ou par e-mail à mail@wepresta.shop, selon l’option de support de votre formule.
Avant de nous écrire, préparez :
- les versions de PrestaShop et de PHP
- le rapport du Diagnostic (bouton Copier pour le support)
- le thème utilisé
- des captures d’écran du formulaire et de l’éditeur