Jump to content

Posibilidad de tener 2 formularios de contacto en prestashop


Recommended Posts

Buenas tardes.

 

Por más que busco y rebusco no encuentro con la solución a mi problema, necesito tener en mi tienda 2 formularios distintos, para dos servicios distintos. Uno ya lo tengo, que es el que viene por defecto, pero el otro no. Mi idea es colocar ese formulario en una página CMS, pero estás páginas no aceptan PHP y ésto es fundamental para que el formulario funcione. También he visto que existe un módulo de pago que te permite crear varios formularios, pero la verdad, preferiría algo gratis.

 

¿Alguna idea chicos?

Link to comment
Share on other sites

Que va, los formularios deben estar en páginas diferentes, ya que cada uno es para un servicio diferente.

 

En una versión 1.4.x de Prestashop (para 1.5.x debe ser casi igual!) lo que yo hice fué añadir un formulario de contacto en la ficha de Producto para contactar vía "Servicio Cliente" y pedir info sobre ese producto de forma rápida, a ver si te sirve:

 

 

product.tpl:

<form method='POST' action=''>
<input type='hidden' name='contact_form' value='formulario'>
<input type='hidden' name='contact_id_product' value='{$product->id|intval}'>
<input type='hidden' name='contact_product' value="Ref: {$product->reference|escape:'htmlall':'UTF-8'} - {$product->name|escape:'htmlall':'UTF-8'}">
<input type='hidden' name='contact_url' value="http://{$smarty.server.SERVER_NAME}{$smarty.server.REQUEST_URI}">
<table border="0" id="contacto">
<tr>
<td class="label">{l s='Nombre'}</td><td class="formulari"><input type='text' name='contact_name' {if $logged} value="{$cookie->customer_firstname} {$cookie->customer_lastname}" readonly="readonly" {/if} /></td>
</tr>
<tr>
<td  class="label">{l s='E-mail'}</td><td class="formulari"><input type='text' name='contact_email' {if $logged} value="{$cookie->email}" readonly="readonly" {/if} /></td>
</tr>
<tr>
<td  class="label">{l s='CP'}</td><td class="formulari"><input type='text' name='contact_cp' value="" /></td>
</tr>
<tr>
<td  class="label">{l s='Mensaje'}</td><td class="formulari"><textarea cols="20" rows="5" name="contact_message">{l s='Acerca del producto'} {$product->reference|escape:'htmlall':'UTF-8'} - {$product->name|escape:'htmlall':'UTF-8'}</textarea> </td>
</tr>
<tr>
<td colspan="2"> </td>
</tr>
<tr>
<td colspan="2" align="center"><input type='submit' value="{l s='CONTACTAR'}" class="button" /></td>
</tr>
<tr>
<td colspan="2" align="center">
<span class="messageko">{$contact_message_ko}</span>
<span class="messageok">{$contact_message_ok|escape:'htmlall':'UTF-8'}</span>  
</td>
</tr>
</table>
</form>

 

 

ProductController.php

(dentro de DisplayContent, antes de mostrar product.tpl):

  Tools::safePostVars();
  $contact_form = Tools::getValue("contact_form");
  $contact_id_product = Tools::getValue("contact_id_product");
  $contact_url = Tools::getValue("contact_url");
  $contact_cp = Tools::getValue("contact_cp");
  $contact_product = Tools::getValue("contact_product");  
  $contact_name = Tools::getValue("contact_name");
  $contact_email = Tools::getValue("contact_email");
  $contact_message = Tools::getValue("contact_message");
  if ($contact_form == "formulario")  {  
$msg_error = "";
if (!validateCore::isEmail($contact_email))
   $msg_error .= "Email incorrecto! <br/>";

self::$smarty->assign('contact_message_ko', $msg_error);
  }

  if ($contact_form == "formulario" && $msg_error == "") {

$ct = new CustomerThread();
$ct->id_product = $contact_id_product;
$ct->id_contact = 1; // id contacto !!!
$ct->id_lang = (int)self::$cookie->id_lang;
$ct->email = $contact_email;
$ct->status = 'open';
$ct->token = Tools::passwdGen(12);
$ct->add();	$msg = "
 <b>Nombre:</b> ".$contact_name." <br/>
 <b>Email:</b>  ".$contact_email." <br/>
 <b>CP:</b> : ".$contact_cp." <br/>
 <b>Producto:</b> : ".$contact_product."<br/>
 <b>URL:</b> : ".$contact_url."<br/>
 <b>Mensaje:</b> ".$contact_message."  
";

$cm = new CustomerMessage();
$cm->id_customer_thread = $ct->id;
$cm->message = htmlentities($msg, ENT_COMPAT, 'UTF-8');
$cm->ip_address = ip2long($_SERVER['REMOTE_ADDR']);
$cm->user_agent = $_SERVER['HTTP_USER_AGENT'];
$cm->add();
$msg_ok = 'Formulario enviado correctamente!';
self::$smarty->assign('contact_message_ok', $msg_ok);
  }

 

Con esto debería ayudarte a lo que buscas, es importante que cambies el $ct->id_contact por el contacto (o servicio) que hayas creado para lo que necesitas.

 

 

Si por el contrario, buscas que te llegue por e-mail es tan sencillo como buscar la función "Send" en la clase "Mail" y añadirla en el mismo sitio añadiendo lo que quieras enviar :-)

Edited by gazapko (see edit history)
Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...