julesfromparis Posted November 28, 2014 Share Posted November 28, 2014 (edited) Bonjour, À mon tour de contribuer un peu sur le Forum Voici un tuto pour ajouter des nouveaux champs sur votre page contact et récupérer les nouvelles variables (téléphone, …) par mail + en backoffice SAV. Ce tuto est pour la version 1.5 de prestashop uniquement - - - - - - 1 : Ajouter vos nouveaux champs dans la page contact Dans le ficher contact.tpl de votre thème ajouter : <p class="text"> <label for="phone">{l s='Phone number'}</label> {if isset($customerThread.phone)} <input type="text" id="phone" name="phone" value="{$customerThread.phone|escape:'htmlall':'UTF-8'}" readonly="readonly" /> {else} <input type="text" id="phone" name="phone" value="" /> {/if} </p> - - - - - - 2 : Ajouter vos champs dans la page contact Dans le fichier contact.html du dossier mail ajouter : <tr> <td>Téléphone: {phone}</td> </tr> =>> Idem dans le fichier contact.txt - - - - - - 3 : Envoyer les nouvelles variables Faire un copier coller du fichier ContactController qui se trouve controller/front vers overide/controller/ - - - - - - A / Retrouver ces lignes de code et ajouter les lignes en rouge if ((int)$id_customer_thread) { $ct = new CustomerThread($id_customer_thread); $ct->status = 'open'; $ct->id_lang = (int)$this->context->language->id; $ct->id_contact = (int)($id_contact); if ($id_order = (int)Tools::getValue('id_order')) $ct->id_order = $id_order; if ($id_product = (int)Tools::getValue('id_product')) $ct->id_product = $id_product; $ct->phone = Tools::getValue('phone'); $ct->update(); } else { $ct = new CustomerThread(); if (isset($customer->id)) $ct->id_customer = (int)($customer->id); $ct->id_shop = (int)$this->context->shop->id; if ($id_order = (int)Tools::getValue('id_order')) $ct->id_order = $id_order; if ($id_product = (int)Tools::getValue('id_product')) $ct->id_product = $id_product; $ct->id_contact = (int)($id_contact); $ct->id_lang = (int)$this->context->language->id; $ct->email = $from; $ct->status = 'open'; $ct->token = Tools::passwdGen(12); $ct->phone = Tools::getValue('phone'); $ct->add(); } - - - - - - B / Ajouter encore les lignes en rouge if (!count($this->errors)) { $var_list = array( '{order_name}' => '-', '{attached_file}' => '-', '{message}' => Tools::nl2br(stripslashes($message)), '{email}' => $from, '{product_name}' => '', '{phone}' => (isset($ct) && $ct->phone) ? $ct->phone : '', ); - - - - - - C / Ajouter encore les lignes en rouge - Permet au visiteur de pas tout réécrire après un message d'erreur (option) $this->context->smarty->assign(array( 'contacts' => Contact::getContacts($this->context->language->id), 'message' => html_entity_decode(Tools::getValue('message')), 'phone' => html_entity_decode(Tools::getValue('phone')), - - - - - - D / Ajouter encore les lignes en rouge si vous souhaitez un champs obligatoire (option) else if (!empty($fileAttachment['name']) && !in_array( Tools::strtolower(substr($fileAttachment['name'], -4)), $extension) && !in_array( Tools::strtolower(substr($fileAttachment['name'], -5)), $extension)) $this->errors[] = Tools::displayError('Bad file extension'); /* AJOUT ICI */ if (!($phone = trim(Tools::getValue('phone')))) $this->errors[] = Tools::displayError('Please write down your Phone Number'); - - - - - - 4 : Lien avec la base SQL Dans override/classes/ créer un nouveau fichier nommé : CustomerThread.php Et ajouter le code suivant : <?php class CustomerThread extends CustomerThreadCore { public $phone; public static $definition = array( 'table' => 'customer_thread', 'primary' => 'id_customer_thread', 'fields' => array( 'id_lang' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true), 'id_contact' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId', 'required' => true), 'id_shop' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'), 'id_customer' =>array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'), 'id_order' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'), 'id_product' => array('type' => self::TYPE_INT, 'validate' => 'isUnsignedId'), 'email' => array('type' => self::TYPE_STRING, 'validate' => 'isEmail', 'size' => 254), 'token' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName', 'required' => true), 'status' => array('type' => self::TYPE_STRING), 'date_add' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'), 'date_upd' => array('type' => self::TYPE_DATE, 'validate' => 'isDate'), 'phone' => array('type' => self::TYPE_STRING, 'validate' => 'isGenericName'), ), ); } Dans votre base SQL, allé à ps_customer_thread et ajouter une nouvelle colonne TXT : phone - - - - - - 5 : Affichage en BO Allé dans Admin > thèmes > default > template > controllers > customer_threads et copier le fichier message.tpl PUIS coller le dans un nouveau dossier que l'on nomme customer_threads dans overide > controller > admin > templates PUIS Ouvrir le fichier message.tpl en ajoutant : <dl> <dt>{l s='Thread ID:'}</dt> <dd>{$message.id_customer_thread}</dd> </dl> === >> ici on ajoute <dl> <dt>{l s='Téléphone:'}</dt> <dd>{$message.phone}</dd> </dl> - - - - - - 6 : FIN J'espère que ce tutoriel est assez explicite ! "Inspiré" de la version anglaise : http://nemops.com/adding-new-fields-to-prestashop-contact-form/#.VHhGblbS6w3 Edited November 28, 2014 by julesfromparis (see edit history) Link to comment Share on other sites More sharing options...
Khundo Posted June 28, 2015 Share Posted June 28, 2015 bonjour, il se trouve où le message.tpl dans la version 1.4.11? Link to comment Share on other sites More sharing options...
Mediacom87 Posted June 28, 2015 Share Posted June 28, 2015 bonjour, il se trouve où le message.tpl dans la version 1.4.11? Bonjour, ce tuto ne concerne que la version 1.5 de Prestashop comme cela est précisé et ne sera pas du tout compatible avec la version 1.4 de Prestashop. Link to comment Share on other sites More sharing options...
Khundo Posted June 28, 2015 Share Posted June 28, 2015 (edited) Bonjour, Merci pour votre réponse si rapide J'ai réussi à moitié mettre le nom et le téléphone dans contact-form de la version 1.4.11 en testant il y a 2 message envoyer : - 1e message via mail au sav ou vender, il y a bien nom, téléphone, mail et message qui affiche mais il n'y a pas ref de la commande ni ref du produit - 2em message via mail au client avertissant que son message a été bien envoyé, il y a bien ref. de la commande et ref.du produit, mail et message mais pas nom ni téléphone Serait il possible de regrouper en 1 donc SAV ou vendeur et client puissent recevoir le même message? ex: Nom:123soleil Télé:06xx mail: [email protected] ref: commande: xxl12 ref: produit: brozage Message : bien reçu le produit de bronzage acheté Merci d'avance Edited June 28, 2015 by Khundo (see edit history) Link to comment Share on other sites More sharing options...
Khundo Posted July 3, 2015 Share Posted July 3, 2015 Salut, mon problème est résolu pour la version 1.4.11 coté client et vendeur reçoivent le meme message pour ceux qui veulent utiliser sur la version 1.4.11,il suffit juste ajouter dans controller.php vers ligne 160 if (!empty($contact->email)) { $email_variables = array('{email}' => $from, '{message}' => stripslashes($message), '{phone}' => $phone,'{nom_produit}' => $nom_produit, '{name}' => $name,'{id_order}' => ''); et pour ça n'efface pas le message vers ligne 253 $email = Tools::safeOutput(Tools::getValue('from', ((isset(self::$cookie) AND isset(self::$cookie->email) AND Validate::isEmail(self::$cookie->email)) ? self::$cookie->email : ''))); self::$smarty->assign(array( 'errors' => $this->errors, 'email' => $email, 'phone'=>Tools::getValue('phone'), 'name'=>Tools::getValue('name'), 'nom_produit'=>Tools::getValue('nom_produit'), 'fileupload' => Configuration::get('PS_CUSTOMER_SERVICE_FILE_UPLOAD') )); Merci pour le partage Link to comment Share on other sites More sharing options...
plucian Posted August 14, 2015 Share Posted August 14, 2015 Hello Thank you for this tutorial! I followed all the instructions above and it works just fine but I need help to insert some radio buttons or dropdown lists into the contact form.What should I modify in contact-form.tpl, CustomerThread.php and contactcontroller.php.Thank you! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now