Jump to content

TUTO : Créer nouveaux champs - page contact > Mails + BO


Recommended Posts

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 by julesfromparis (see edit history)
Link to comment
Share on other sites

  • 6 months later...

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 by Khundo (see edit history)
Link to comment
Share on other sites

Salut, mon problème est résolu pour la version 1.4.11 :)

coté client et vendeur reçoivent le meme message

sunvendeur.png

 

sunclient.png

 

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

  • 1 month later...

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

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...