Principali risposte alle domande sul modulo di contatto PrestaShop nel 2017

Cosa pensi che quale parte del tuo negozio PrestaShop sia più importante? Alcuni diranno home page, pagina del prodotto, pagina di checkout ecc. È vero che tutti questi hanno molto da fare per rendere un negozio di successo, ma l'ultima cosa che dovrebbe essere perfetta è il modo in cui i clienti possono contattarti. Se i clienti hanno problemi su una qualsiasi delle pagine sopra menzionate, andranno sicuramente a contattare il proprietario del negozio, quindi il modulo di contatto dovrebbe essere il pezzo principale del tuo negozio.
Quando pensi al modulo di contatto, potresti avere diverse cose in mente come
- Link al modulo di contatto predefinito sul piè di pagina di PrestaShop
- Sistema di biglietti PrestaShop
- Basta fornire un'e-mail di supporto
Perché non andare più avanti di così fornendo un modulo di contatto sulle pagine dei prodotti PrestaShop. Questa sarà un'idea superba per fornire una maggiore fidelizzazione degli utenti sui tuoi siti. Inoltre ci sono moduli a pagamento disponibili per creare la pagina di contatto del prodotto, ma di seguito alcune risorse gratuite.
Come qui stiamo parlando di problemi e soluzione di PrestaShop, quindi partiamo da esso.
Come aggiungere un modulo di contatto del prodotto nella scheda?
Domanda n. 1: Voglio aggiungere il modulo di contatto sulla pagina del prodotto del mio negozio. Come è possibile con una soluzione gratuita?
Risposta: È possibile visualizzare il modulo di contatto sulla pagina del prodotto creando una scheda separata per la pagina di contatto. Il primo passo dovrebbe essere quello di creare una nuova scheda utilizzando qualsiasi modulo di scheda del prodottogratuito oa pagamento . Dopo aver creato la scheda, è necessario disporre di un collegamento della pagina di contatto e inoltre è necessario decidere quale ID e-mail verrà utilizzato per ricevere e-mail dai clienti.
Quando hai entrambe le cose pronte, vai alla sezione nuove schede (che hai creato in precedenza) e incolla il codice sottostante in essa.
<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>
Nella prima riga, devi dare l'url del modulo di contatto della tua pagina e nella2a riga scrivi l'ID e-mail.
Dove aggiungere il codice per il modulo di contatto su una pagina CMS?
Domanda n. 2: Voglio creare un modulo di contatto su una pagina CMS in modo che gli utenti possano inserire le informazioni sulla loro azienda, ad esempio nome, e-mail e quindi invierò loro alcune informazioni. Dove devo scrivere esattamente il codice?
Risposta: se vuoi aggiungere codice su una pagina CMS, devi andare al CMScontroller.php
file che si trova in controllers/front/ directory in init() function
. Tuttavia, è necessario utilizzare un editor in grado di accettare il codice Php.
Come aggiungere un iframe al modulo di contatto di una pagina CMS?
Domanda n. 3: Ho provato ad aggiungere un iframe nella pagina del modulo di contatto ma non lo accetto. Come è possibile?
Risposta: Vai preferences>general
e attiva questa opzione "Consenti iframe sui campi html".
Come aggiungere un modulo di contatto a una pagina CMS?
Domanda n. 4: Voglio creare un modulo di contatto su una pagina CMS. È possibile attraverso la codifica?
Risposta: Sì, è possibile con la modifica di alcuni dei file come ho detto di seguito;
In CMSController.php
dopo
public function init()
Ho aggiunto
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);
$ct->add();
&nb