Prestashop 1.7 – Demande de devis (ép. 33)

Assez régulièrement je vois des e-commerçants qui ont besoin de proposer la demande de devis sur leur boutique Prestashop. Voici une alternative simple et efficace pour éviter de devoir passer par un module externe.

Faire simple, quand c’est possible !

Il y’a beaucoup de modules de devis disponibles sur Prestashop Addons, mais le problème c’est que souvent ceux-ci demandent du temps à la mise en oeuvre… et il faut réviser beaucoup de comportements (les mails / CSS)… tester les processus et optimiser la présentation.

Quand on me parle de demande de devis, ça veut dire clairement que l’humain va devoir interagir… donc il faut que ça soit simple pour l’acheteur et pour le commerçant. Le but final c’est d’établir un lien entre les deux pour qu’une transaction puisse se négocier… (ben oui c’est ça la base du commerce haha).

Dans ce tutoriel je propose donc de faire un bouton qui peut apparaître à la demande sur vos fiches produits et qui conduira automatiquement vers un formulaire de contact pré-rempli. Le client aura uniquement besoin de mettre son adresse email et cela lui évitera aussi de devoir s’inscrire sur le shop.

Ce comportement convient très bien pour des besoins basiques « mono-produit ». Peut-être qu’une prochaine fois on verra ensemble pour faire la même chose… mais avec la globalité du panier. Enfin… grâce à ma méthode vous avez déjà les bases pour mixer ventes classiques / produits sur devis.

Ressources

Pour ce tutoriel vous aurez à disposition :

  • Les fichiers pour ajuster le formulaire de contact.
  • Le fichier pour ajuster le comportement du panier.
  • Un listing des emplacements des fichiers.

Télécharger

Résumé de la vidéo : intégration système de devis pour Prestashop

  • Une fonction très demandée par les clients, mais qui peut être facilement mise en place. Cette approche peut vous dispenser d’acheter un module Prestashop.
  • Mettez un code préfixe « DEV- » sur la référence du produit, ce préfixe sera le déclencheur pour l’affichage du bouton. Nous ajusterons du TPL de la fiche produit pour masquer / afficher automatiquement la zone.
  • Ensuite, vous allez intégrer un override pour le formulaire de contact, afin de pré-remplir automatiquement le champ du message. On fera aussi un ajustement de la taille du formulaire, pour que ça soit ergonomique.

Notez mon billet, Google va adorer :
1 étoiles - J'aime pas !2 étoiles - Bof !3 étoiles - Bien !4 étoiles - Très bien !5 étoiles - Génial ! (9 votes, moyenne : 5,00 sur 5)
Loading...

39 commentaires sur “Prestashop 1.7 – Demande de devis (ép. 33)”

  1. Bonsoir,

    Je souhaite ajouter quelques phrases supplémentaire pour la demande de devis à la place de votre exemple :

    « Bonjour,

    Je suis intéressé par le produit ci-dessous :

    http://etc

    Merci de contacter »

    Je dois modifier le fichier contactform.tpl pour ajouter des phrases?

    Si oui pourriez-vous m’indiquer l’endroit ?

    Je souhaiterai ajouter quelques phrases, du types :

    Quantités/coloris/Adresse de livraison etc…

    Merci pour le tutoriel.

    1. Bonjour,

      Pour cela il faut modifier le fichier « contactform.php » vers la ligne 95 vous pouvez encapsuler votre texte sur le même principe que l’exemple que j’ai intégré.

      A bientôt !

  2. Bonjour

    super tuto merci beaucoup pour votre pédagogie 🙂
    petite question comment traduire le contenu de l’email (bonjour… merci de contacter etc ) dans les différentes langues que prestashop peut proposer ?
    mon site est en francais et en anglais , en francais pas de souci mais en anglais les phrases restent en francais … merci bcp pour votre aide

    1. Bonjour,

      Normalement via l’outil de traduction en back-office de Prestashop cela devrait pouvoir se faire. Il faudrait regarder pour traduire le module « contactform ».

      A bientôt !

  3. Bonjour,
    Je viens de mettre en place un produit avec demande de devis, tout fontionne bien à un détail près : dans le mail que je reçois via le formulaire de contact, le lien vers le produit concerné n’est pas cliquable. D’où cela peut-il venir ?

    Merci d’avance de votre réponse

    1. Bonjour,

      Cela va dépendre du client de messagerie, si vous ouvrez le mail de devis sous Gmail cela sera peut-être cliquable… mais dans Outlook pas sûr. J’ai évité dans le tutoriel de mettre du code HTML dans le lien, car cela complexifiait ensuite le tutoriel (au niveau de la validation du formulaire).

      A bientôt !

      1. Ok merci, rien de bien grave je n’aurai qu’un ou deux produits concernés par la demande de devis, ça ira donc très bien comme ça.
        Bon, quand la boutique sera en ligne je vous mettrai dans les crédits parce que jétais tombé sur vos tutos en cherchant à faire je-ne-sai-plus-trop-quoi, et depuis j’applique quand même pas mal de vos idées et conseils. Ça colle avec ce qu’on voulait faire : simple et efficace.

  4. Bonjour,
    Je viens de suivre votre tuto, qui je souligne est vraiment sympa car vous prenez le temps d’expliquer ce qui devient rare, mais je rencontre un problème lors du clic sur le bouton devis :

    voici le message d’erreur :
    [Debug] This page has moved
    Please use the following URL instead:

    et quand je clique sur lien indiqué ca m’envoie bien vers le formulaire contact
    .
    Merci d’avance pour votre aide

    1. Bonjour,

      Ce n’est pas grave je pense que c’est parce que le debug Prestashop est activé, essayez de le désactiver pour voir si l’erreur persiste.

      A bientôt !

  5. Bonjour, d’abord merci pour votre article,

    je voulais savoir si dans le code c’est possible de modifier et pour ces types de produits ne pas afficher du tout de tarif merci beaucoup.

      1. Bonjour,
        Cette video explique comment masquer les prix pour une catégorie de clients, je crois que Jean voulait en fait savoir comment masquer les prix sur les produits avec demande de devis. Je m’étais dit la même chose en suivant votre tutoriel, du coup j’ai bricolé un peu (oui parce que si j’étais développeur je n’aurais pas besoin de suivre vos tutos hein 🙂 ). J’ai donc utilisé le code qui permet dans ce tuto de masquer le bouton « ajouter au panier » et je l’ai ajouté dans le fichier « mon-thème »/templates/catalog/_partials/miniatures/product.tpl :
        {block name=’product_price_and_shipping’}
        {if $product.show_price}

        Voilà, je ne sais pas si c’est correct mais ça fonctionne bien alors ça me va. J’en ai aussi profité pour enlever « quantité » « référence » et « stock ».

        1. Bonjour,

          Merci pour votre retour d’expérience à ce sujet (il est toujours délicat de se prononcer sur chaque demande spécifique).

          A bientôt !

  6. Bonjour, merci pour ce tutorial,

    je voulais savoir dans votre code si possible d’enlever le prix et quantité mais seulement pour les demandes de devis et non les produits en vente

    merci.

    1. Bonjour,

      Oui sur le principe je ferais quelque chose du genre dans le code du thème de la fiche produit si la référence du produit commence par « DEVIS- » alors mettre un « display:none » sur les DIV concernées (et faire ça directement dans le TPL Smarty).

      A bientôt !

  7. Bonjour et merci pour ce très bon tuto.

    Cependant je n’arrive pas à l’intégrer sur 1.6.1.
    Est-il possible d’avoir le morceau de code uniquement pour caché le bouton et prix selon le même préfixe?

    Merci d’avance.

    1. Bonjour,

      Désolé, mais ce tutoriel est valable uniquement pour Prestashop 1.7, pour les autres points ces demandes sont trop spécifiques pour les traiter ici.

      A bientôt !

  8. Bonjour et un grand bravo pour ce tutoriel qui est très bien expliqué et en français. Par contre, j’ai bien le panier qui ce modifie correctement, mais dans la page contact les infos ne s’affichent pas sauf dans l’URL. J’utilise la 1.7.4.2 avec un template autre, cache désactivé pour infos, je ne trouve pas mon erreur ))-:.

    Pour la modification de la page contact, j’ai codé comme ca :

    // MODIFICATION DU FORMULAIRE POUR LES DEVIS
            
            $purl = Tools::getValue('$purl');
            if (!empty($purl)){
                $message = $this->l('Bonjour,')."\n".
                           "\n".
                           $this->l('Je suis intéressé par le produit ci-dessous.')."\n".
                           "\n".
                           html_entity_decode(Tools::getValue('pname')).':'."\n".
                           $purl."\n".
                           "\n".
                           $this->l('Merci de nous contacter');
                           echo $this->l('Bonjour,');
            } else {
                $message = Tools::getValue('message');
            }
            $this->contact['message'] = $message;
            //$this->contact['message'] = html_entity_decode(Tools::getValue('message'));//
    

    pour le product-add-to-cart : j’ai ajouté ca :

      
      {if $product.reference|substr:0:4=='DEV-'}
        
          <a>getPageLink('contact',true)*}index.php?controller=contact-form&amp;purl={if isset($smarty.server.HTTPS)}
          https://{else}http://{/if}{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}&amp;pname={$product.name}"&gt;{l s='Demander un devis' d='Shop.Theme.Actions'}</a>
        
        
      {/if}
    
      {if !$configuration.is_catalog}
      
       
        {l s='Quantity' d='Shop.Theme.Catalog'}
    
        {block name='product_quantity'}
       
            
              
            
          
          
           
              &lt;button
                class=&quot;btn btn-primary add-to-cart&quot;
                data-button-action=&quot;add-to-cart&quot;
                type=&quot;submit&quot;
                {if !$product.add_to_cart_url}
                  disabled
                {/if}
                {if $product.quantity 
              <i>&#xe854;</i>
                
                {l s='Add to cart' d='Shop.Theme.Actions'}
              
            
        {/block}
    
    1. Bonjour,

      Difficile de répondre sur ce point, car cette intégration a été testée avec le thème par défaut. Ce que vous pouvez essayer de faire c’est de remplacer vos fichiers par ceux fournis dans la source… mais délicat de vous en dire plus.

      A bientôt !

    1. Bonjour,

      Essayez peut-être de comparer la différence entre le fichier que je propose et celui dans votre boutique Prestashop (avec un logiciel comme Winmerge) et remplacez peut-être que la zone concernée par le tutoriel (au lieu de remplacer le fichier intégralement).

      A bientôt !

  9. Bonjour
    j’aimerai modifier ce tuto pour transformer automatiquement le bouton add to cart en demande devis mais uniquement quand le stock du produit passe a zéro (donc quand le produit n’est plus disponible à la vente) J’ai essayé de modifier la condition {if $product.reference|substr:0:4==’DEV-‘} pour trouver un paramètre sur la disponibilité mais je n’y arrive pas .
    Auriez vous une piste ?
    merci

  10. Bonjour, je suis sur prestashop 1.7.4.4 déjà un grand merci pour les tutos qui m’ont grandement aidé.Comme beaucoup de personnes je cherche à avoir une demande de devis uniquement sur quelques produits. J’ai suivi scrupuleusement vos indications via la vidéo et les fichiers mais rien n’y fait je n’arrive même pas à faire apparaitre l’onglet demande de devis. J’ai un thème builder fonctionnel et j’ai testé sur tous les fichiers produc add cart mais rien ne change.
    Je cherche surtout a mettre l’onglet demande de devis sur les produits qui ont un tarifs à zéro je ne sais pas comment modifier le code:

        {if $product.reference|substr:0:4=='DEV-'}
        
            <a>getPageLink('contact',true)*}index.php?controller=contact-form&amp;purl={if isset($smarty.server.HTTPS)}https://{else}http://{/if}{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}&amp;pname={$product.name}"&gt;{l s='Demander un devis' d='Shop.Theme.Actions'}</a>
        
        
        {/if}
    

    et surtout ou le placer car comme dit plus haut j’ai testé bon nombre de possibilité et de fichier (je ne suis pas un pro) mais rien de concluant.
    je vous remercie d’avance et merci pour tout

    1. Bonjour,

      Il est délicat de pouvoir juger votre code, dans le cas présent le conseil que je pourrais éventuellement vous donner c’est de commencer par remplacer vos fichiers par ceux fourni dans le tutoriel (pour voir si cela fonctionne), mais pensez à faire une sauvegarde des fichier originaux avant remplacement.

      A bientôt !

  11. Bonsoir, je reviens vers vous car après plusieurs essai j’ai le bouton « demande de devis qui est présent mais il a fallu chercher un peu.je m’explique :
    Je suis sur un thème prestabuilder, avec des modules intégré au thème. lorsque je suis le tuto et que vous insérez votre code :
    {* Webbax – 09.09.17 – Tuto 33 – Devis *}
    {if $product.reference|substr:0:4==’DEV-‘}

    getPageLink(‘contact’,true)*}index.php?controller=contact-form&purl={if isset($smarty.server.HTTPS)}https://{else}http://{/if}{$smarty.server.HTTP_HOST}{$smarty.server.REQUEST_URI}&pname={$product.name} »>{l s=’Demander un devis’ d=’Shop.Theme.Actions’}

    {/if}
    celui ci devrait apparaitre, mais avec mon thème builder je ne vois rien et j’ai toujours le « ajouter au panier » avec la référence produit commençant par DEV-.
    Donc afin de vérifier si tout fonctionner correctement en suivant votre tuto, j’ai décidé de le faire avec le thème classic, cela fonctionne parfaitement, je décide donc de remettre mon thème builder et là je vois bien le bouton « demander de devis » si je clique sur le bouton j’ai la page de demande d’information qui s’ouvre également.
    Maintenant, (car tout ne fonctionne pas), lorsque j’active mon module « ajouter au panier prestabuilder » dans la BO, sur mon site (hors page produit et hors aperçu) j’ai toujours le »ajouter au panier »j’espère que ça peut aider les novices comme moi à résoudre totalement ou partiellement les problèmes.

    1. Bonjour,

      Difficile de se prononcer sur des cas spécifiques, car dans le tutoriel c’est toujours le thème par défaut qui est utilisé (avec les thèmes avancés il y’a d’autres comportements qu’il faut parfois prendre en compte).

      A bientôt !

  12. Bonjour,
    Encore Merci pour vos super tutos. il sont vraiment simple a suivre .
    je me trouve cependant devant une petite bizarrerie que je ne peu m’expliquer.
    la demande de devis fonctionne a merveille sur l’ aperçu rapide du produit, mais tombe en page 404 sur la fiche produit elle même.
    ma version de prestashop est 1.7.5.0
    j’ai vraiment du mal à comprendre d’ou peu provenir ce défaut.
    je vous remercie beaucoup vos tutos sont vraiment top.

  13. Bonsoir,
    Je souhaite ajouter quelques phrases supplémentaire pour la demande de devis à la place de votre exemple :
    « Bonjour,
    Je suis intéressé par le produit ci-dessous :
    http://etc&#8230;
    Merci de contacter »
    Je dois modifier le fichier contactform.tpl pour ajouter des phrases?
    Si oui pourriez-vous m’indiquer l’endroit ?
    Je souhaiterai ajouter quelques phrases, du types :
    Quantités/coloris/Adresse de livraison etc…
    Merci pour le tutoriel.

    1. Bonjour,

      Si vous voulez ajouter un texte différent au moment de la demande de devis (pré-remplissage) il faut intervenir sur le fichier « contactform.php ».

      A bientôt !

  14. Super article, celui-ci m’a permis d’effectuer un prix sur demande (pour un montant dépassant une telle somme). J’ai juste un soucis, dans le contactform.php, je voudrais pouvoir le gérer en multi-langues mais quand je vais dans app/translation/…/ModuleContactFormAdmin ou ModuleContactFormShop, je n’arrive pas à gérer les traductions pour l’autocomplétion du champs texterea.
    Je pars de:

    $message=$this -&gt; trans('hello', [], 'Module.Contactform.Admin');
    

    Voici un exemple de code …
    pour le fichier tpl, aucun soucis mais le fichier php sous prestashop je bloque … Vous auriez une piste ?? Merci pour votre super boulot

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *