Principales respuestas de preguntas sobre el formulario de contacto de PrestaShop en 2017

Posted On: Sep 14, 2018
Categories: Einkaufswagen & Plattformen
¿Qué te parece que parte de tu tienda PrestaShop es la más importante? Algunos dirán página de inicio, página de producto, página de pago, etc. Es cierto que todos estos tienen mucho que ver con hacer que una tienda tenga éxito, pero lo último que debería ser perfecto es la forma en que los clientes pueden contactarlo. Si los clientes tienen problemas en cualquiera de las páginas mencionadas anteriormente, definitivamente irán a ponerse en contacto con el propietario de la tienda, por lo que el formulario de contacto debe ser la pieza maestra de su tienda.
Cuando piensas en el formulario de contacto, es posible que tengas varias cosas en mente, como
- Enlace de formulario de contacto predeterminado en el pie de página de PrestaShop
- Sistema de tickets PrestaShop
- Simplemente proporcione un correo electrónico de soporte
¿Por qué no ir más adelantado que eso proporcionando un formulario de contacto en las páginas de productos de PrestaShop? Esa será una excelente idea para proporcionar más retención de usuarios en sus sitios. También hay módulos de pago disponibles para crear la página de contacto del producto, pero se dan a continuación algunos recursos gratuitos.
Como aquí estamos hablando de problemas y solución de PrestaShop, así que empecemos por ello.
¿Cómo agregar un formulario de contacto de producto en la pestaña?
Pregunta Nº 1: Quiero añadir un formulario de contacto en la página del producto de mi tienda. ¿Cómo es posible con una solución gratuita?
Respuesta:Puede mostrar el formulario de contacto en la página del producto mediante la creación de una pestaña separada para la página de contacto. El primer paso debe ser crear una nueva pestaña utilizando cualquier módulo de pestaña de productogratuito o de pago. Después de la creación de la pestaña, debe tener un enlace de su página de contacto y también debe decidir qué identificación de correo electrónico se utilizará para recibir correos electrónicos de los clientes.
Cuando tenga ambas cosas listas, simplemente vaya a la sección de nuevas pestañas (que ha creado anteriormente) y pegue el código a continuación en ella.
<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>
En la primera línea, tienes que dar la url del formulario de contacto de tu página y en la2ª línea escribir el ID de correo electrónico.
¿Dónde agregar el código para el formulario de contacto en una página de CMS?
Pregunta No. 2: Quiero crear un formulario de contacto en una página de CMS para que los usuarios puedan ingresar la información de su empresa, por ejemplo, nombre, correo electrónico y luego les enviaré alguna información. ¿Dónde exactamente tengo que escribir el código?
Respuesta:si desea agregar código en una página de CMS, debe ir al CMScontroller.php
archivo ubicado en controllers/front/ directory in init() function
. Sin embargo, debe usar un editor que pueda aceptar código Php.
¿Cómo agregar un iframe al formulario de contacto de una página CMS?
Pregunta No. 3: He intentado agregar un iframe en la página del formulario de contacto, pero no es aceptable. ¿Cómo es posible?
Respuesta:Vaya preferences>general
y active esta opción "Permitir iframes en campos html".
¿Cómo agregar un formulario de contacto a una página de CMS?
Pregunta Nº 4: Quiero crear un formulario de contacto en una página de CMS. ¿Es posible a través de la codificación?
Respuesta: Sí, es posible con la edición de algunos de los archivos como mencioné a continuación;
En CMSController.php
después
public function init()
Agregué
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);