© 2011-2017 Yume Design // Boiron Laetitia Graphisme et webdesign

Un formulaire de contact dans la page produit Prestashop

//

Un formulaire de contact dans la page produit Prestashop

Un petit tuto pour ceux qui auraient l’idée bizarre de vouloir intégrer un formulaire de contact directement dans la page détail produit Prestashop.
Etape 1 : Intégrer le formulaire à la page produit (product.tpl)

Mettez votre formulaire là où vous désirez dans votre page.

{if isset($confirmation)}
   <p>Message bien envoyé !</p>
{else}
   <form action="{$request_uri|escape:'htmlall':'UTF-8'}" method="post">
       <input name="id_contact" type="hidden" value="2" /> // je force le formulaire à être envoyé au contact dont l'id est 2

           <label for="email">E-mail</label>
              <input type="text" id="email" name="from" value="{$email}" placeholder="" />
           <label for="Nom">Nom</label>
              <input type="text" id="nom" name="nom" value="{$nom}" />
           <label for="message">{l s='Message'}</label>
             <textarea id="message" name="message" rows="3" cols="10">{if isset($message)}{$message|escape:'htmlall':'UTF-8'|stripslashes}{/if}</textarea>

           <input type="submit" name="submitMessage" id="submitMessage" value="Envoyer" onclick="$(this).hide();" />
</form>
{/if}

Etape 2 : modifier ProductController (dans le dossier Controller)

[*MaJ : Le code est inséré dans la fonction process()*]

/* FORMULAIRE DE CONTACT */
       if (Tools::isSubmit('submitMessage'))
       {
           $message = Tools::htmlentitiesUTF8(Tools::getValue('message'));

           if (!($from = trim(Tools::getValue('from'))) OR !Validate::isEmail($from))
               $this->errors[] = Tools::displayError('Invalid e-mail address');
           elseif (!($nom = trim(Tools::getValue('nom'))) OR (!($nom = nl2br2($nom))))
               $this->errors[] = Tools::displayError('Contact Name cannot be blank');
           elseif (!($message = nl2br2($message)))
               $this->errors[] = Tools::displayError('Message cannot be blank');
           elseif (!Validate::isCleanHtml($message))
               $this->errors[] = Tools::displayError('Invalid message');
           elseif (!($id_contact = (int)(Tools::getValue('id_contact'))) OR !(Validate::isLoadedObject($contact = new Contact((int)($id_contact), (int)(self::$cookie->id_lang)))))
               $this->errors[] = Tools::displayError('Please select a subject on the list.');
       }

       if (!empty($contact->email))
               {
                   if (Mail::Send((int)self::$cookie->id_lang, 'contact2', Mail::l('Message from contact form', (int)self::$cookie->id_lang), array('{email}' => $from, '{message}' => stripslashes($message), '{nom}' => $nom), $contact->email, $contact->name, $from)
                       AND Mail::Send((int)self::$cookie->id_lang, 'contact_form', Mail::l('Your message has been correctly sent', (int)self::$cookie->id_lang), array('{message}' => stripslashes($message)), $from))
                       self::$smarty->assign('confirmation', 1);
                   else
                       $this->errors[] = Tools::displayError('An error occurred while sending message.');
               }

Afin que mon champ « nom » puisse être intégré au mail vous remarquerez que j’ai ajouté

, '{nom}' => $nom

à la condition d’envoi.

Bon c’est joli mais le champ nom n’apparaît pas dans mes mails !

Etape 3 : modifier le mail de réception…

Comme il existe déjà un formulaire de contact nommé « contact » dans le dossier « mail/fr » mais qu’il est utilisé pour le formulaire de contact de prestashop général nous allons créer un autre fichier de réception. Notez dans la partie2 qu’il y a un « contact2″ dans la condition d’envoi. C’est notre fichier !! Le plus simple est de faire un copier/coller de vos fichiers : contact.html et contact.txt. Et nommez-les contact2.html et contact2.txt.

Vous avez un simple :

Adresse &amp;eacute;lectronique : <a href="mailto:{email}"><b>{email}</b></a>
               <br>
               Message: {message}

Il vous suffit de rajouter où vous le souhaitez :

nom : {nom}

Et voila vous avez un beau formulaire de contact qui s’intègre à votre page de produits :)

Fonctionne sous Prestashop 1.4, non essayé sur la version 1.5


Vos commentaires

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici
  • Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Suivre les commentaires : RSS 2.0 | Atom

11 1-2