Top Questions Réponses sur le formulaire de contact PrestaShop en 2017

Posted On: Sep 14, 2018
Categories: Carros y plataformas de compras
Qu’est-ce que vous pensez que quelle partie de votre magasin PrestaShop est la plus importante? Certains diront page d’accueil, page de produit, page de paiement, etc. Il est vrai que tout cela a beaucoup à faire pour un magasin un succès, mais la dernière chose qui devrait être parfaite est la façon dont les clients peuvent vous contacter. Si les clients ont un problème sur l’une des pages mentionnées ci-dessus, ils iront certainement contacter le propriétaire du magasin, de sorte que le formulaire de contact devrait être la pièce maîtresse de votre boutique.
Lorsque vous pensez au formulaire de contact, vous pouvez avoir plusieurs choses en tête comme
- Lien du formulaire de contact par défaut en bas de page de PrestaShop
- Système de tickets PrestaShop
- Il suffit de fournir un e-mail d’assistance
Pourquoi ne pas aller plus loin que cela en fournissant un formulaire de contact sur les pages produits PrestaShop. Ce sera une excellente idée pour fournir plus de rétention des utilisateurs sur vos sites. Il existe également des modules payants disponibles pour créer une page de contact produit, mais donnés ci-dessous quelques ressources gratuites.
Comme ici, nous parlons des problèmes et de la solution de PrestaShop, alors commençons par là.
Comment ajouter un formulaire de contact produit dans l’onglet ?
Question n° 1 : Je souhaite ajouter un formulaire de contact sur la page produit de ma boutique. Comment est-ce possible avec une solution gratuite?
Réponse: Vous pouvez afficher le formulaire de contact sur la page du produit en créant un onglet séparé pour la page de contact. La première étape devrait être de créer un nouvel onglet à l’aide de n’importe quel module d’onglet de produitgratuit ou payant. Après la création de l’onglet, vous devez avoir un lien de votre page de contact et vous devez également décider quel identifiant de messagerie sera utilisé pour recevoir des e-mails de clients.
Lorsque vous avez les deux choses prêtes, allez simplement dans la section des nouveaux onglets (que vous avez créée précédemment) et collez-y le code ci-dessous.
<form action="_____URL_TO_CONTACT_FORM_____"method="post"class="contact-form-box"enctype="multipart/form-data">
<input type="hidden"name="id_contact"value="_____ID_OF_CONTACT_____">
<fieldset>
<h3class="page-subheading">send a message</h3>
<div class="clearfix">
<div class="col-xs-12 col-md-3">
<div class="form-group selector1">
<label for="email">Email address</label>
<input class="form-control grey validate"type="text"id="email"name="from"data-validate="isEmail"value="">
</div>
<div class="submit">
<button type="submit"name="submitMessage"id="submitMessage"class="button btn btn-default button-medium"><span>Send<i class="icon-chevron-right right"></i></span></button>
</div>
</div>
<div class="col-xs-12 col-md-9">
<div class="form-group">
<label for="message">Message</label>
<textarea style="min-height:100px;"class="form-control"id="message"name="message">Question about {name}</textarea>
</div>
</div>
</div>
</fieldset>
</form>
Dans la première ligne, vous devez donner l’url du formulaire de contact de votre page et dans la2ème ligne écrire l’identifiant de l’e-mail.
Où ajouter le code du formulaire de contact sur une page CMS ?
Question n°2: Je souhaite créer un formulaire de contact sur une page CMS afin que les utilisateurs puissent saisir les informations de leur entreprise, par exemple nom, e-mail, puis je leur enverrai des informations. Où exactement dois-je écrire le code ?
Réponse: si vous souhaitez ajouter du code sur une page CMS, vous devez aller CMScontroller.php
dans le fichier situé dans controllers/front/ directory in init() function
. Cependant, vous devez utiliser un éditeur qui peut accepter le code Php.
Comment ajouter un iframe au formulaire de contact d’une page CMS ?
Question n°3: J’ai essayé d’ajouter un iframe sur la page du formulaire de contact mais il n’est pas accepté. Comment est-ce possible?
Réponse: Allez dans preferences>general
et activez cette option « Autoriser les iframes sur les champs html ».
Comment ajouter un formulaire de contact à une page CMS ?
Question n° 4 : Je souhaite créer un formulaire de contact sur une page CMS. Est-ce possible grâce au codage?
Réponse : Oui, c’est possible avec l’édition de certains des fichiers comme je l’ai mentionné ci-dessous;
Dans CMSController.php
après
public function init()
J’ai ajouté
public function postProcess()
{
if (Tools::isSubmit('submitMessage'))
{
$fileAttachment = null;
if (isset($_FILES['fileUpload']['name']) && !empty($_FILES['fileUpload']['name']) && !empty($_FILES['fileUpload']['tmp_name']))
{
$extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');
$filename = uniqid().substr($_FILES['fileUpload']['name'], -5);
$fileAttachment['content'] = file_get_contents($_FILES['fileUpload']['tmp_name']);
$fileAttachment['name'] = $_FILES['fileUpload']['name'];
$fileAttachment['mime'] = $_FILES['fileUpload']['type'];
}
$message = Tools::getValue('message'); // Html entities is not usefull, iscleanHtml check there is no bad html tags.
if (!($from = trim(Tools::getValue('from'))) || !Validate::isEmail($from))
$this->errors[] = Tools::displayError('Invalid email address.');
else if (!$message)
$this->errors[] = Tools::displayError('The message cannot be blank.');
else if (!Validate::isCleanHtml($message))
$this->errors[] = Tools::displayError('Invalid message');
else if (!($id_contact = (int)(Tools::getValue('id_contact'))) || !(Validate::isLoadedObject($contact = new Contact($id_contact, $this->context->language->id))))
$this->errors[] = Tools::displayError('Please select a subject from the list provided. ');
else if (!empty($_FILES['fileUpload']['name']) && $_FILES['fileUpload']['error'] != 0)
$this->errors[] = Tools::displayError('An error occurred during the file-upload process.');
else if (!empty($_FILES['fileUpload']['name']) && !in_array(substr(Tools::strtolower($_FILES['fileUpload']['name']), -4), $extension) && !in_array(substr(Tools::strtolower($_FILES['fileUpload']['name']), -5), $extension))
$this->errors[] = Tools::displayError('Bad file extension');
else
{
$customer = $this->context->customer;
if (!$customer->id)
$customer->getByEmail($from);
$contact = new Contact($id_contact, $this->context->language->id);
if (!((
($id_customer_thread = (int)Tools::getValue('id_customer_thread'))
&& (int)Db::getInstance()->getValue('
SELECT cm.id_customer_thread FROM '._DB_PREFIX_.'customer_thread cm
WHERE cm.id_customer_thread = '.(int)$id_customer_thread.' AND cm.id_shop = '.(int)$this->context->shop->id.' AND token = ''.pSQL(Tools::getValue('token')).''')
) || (
$id_customer_thread = CustomerThread::getIdCustomerThreadByEmailAndIdOrder($from, (int)Tools::getValue('id_order'))
)))
{
$fields = Db::getInstance()->executeS('
SELECT cm.id_customer_thread, cm.id_contact, cm.id_customer, cm.id_order, cm.id_product, cm.email
FROM '._DB_PREFIX_.'customer_thread cm
WHERE email = ''.pSQL($from).'' AND cm.id_shop = '.(int)$this->context->shop->id.' AND ('.
($customer->id ? 'id_customer = '.(int)($customer->id).' OR ' : '').'
id_order = '.(int)(Tools::getValue('id_order')).')');
$score = 0;
foreach ($fields as $key => $row)
{
$tmp = 0;
if ((int)$row['id_customer'] && $row['id_customer'] != $customer->id && $row['email'] != $from)
continue;
if ($row['id_order'] != 0 && Tools::getValue('id_order') != $row['id_order'])
continue;
if ($row['email'] == $from)
$tmp += 4;
if ($row['id_contact'] == $id_contact)
$tmp++;
if (Tools::getValue('id_product') != 0 && $row['id_product'] == Tools::getValue('id_product'))
$tmp += 2;
if ($tmp >= 5 && $tmp >= $score)
{
$score = $tmp;
$id_customer_thread = $row['id_customer_thread'];
}
}
}
$old_message = Db::getInstance()->getValue('
SELECT cm.message FROM '._DB_PREFIX_.'customer_message cm
LEFT JOIN '._DB_PREFIX_.'customer_thread cc on (cm.id_customer_thread = cc.id_customer_thread)
WHERE cc.id_customer_thread = '.(int)($id_customer_thread).' AND cc.id_shop = '.(int)$this->context->shop->id.'
ORDER BY cm.date_add DESC');
if ($old_message == $message)
{
$this->context->smarty->assign('alreadySent', 1);
$contact->email = '';
$contact->customer_service = 0;
}
if ($contact->customer_service)
{
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->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);
&n