Guía – Añadir nuevos campos al formulario de contacto en Prestashop 1.5

En esta guía, explicaremos como agregar un nuevo campo al formulario de contacto en Prestashop 1.5.

nuevocampo

Digo solo “un nuevo campo“, porque el mismo ejemplo, servirá para añadir más campos al formulario de contacto, en caso de que tengamos esa necesidad.

Vamos a seguir los siguientes pasos:

Ir al siguiente fichero:

/themes/tu-plantilla/contact-form.tpl (Este fichero, corresponde a la plantilla de impresión del formulario de contacto)

Y por ejemplo, buscamos esto:

<p class="textarea">
<label for="message">{l s='Message'}</label>
<textarea id="message" cols="10" name="message" rows="15">{if isset($message)}{$message|escape:'htmlall':'UTF-8'|stripslashes}{/if}</textarea>
</p>

Y debajo, por ejemplo, añadimos el siguiente código:

<p class="text">
<label for="nuevocampo">{l s='Nuevo campo'}</label>
<input type="text" id="nuevocampo" name="nuevocampo" value="{if isset($nuevocampo)}{$nuevocampo|escape:'htmlall':'UTF-8'|stripslashes}{/if}" />
</p>

Hemos añadido un nuevo campo de “texto” (input type=”text” …) donde en el atributo “name” de dicho campo, hemos asignado el valor “nuevocampo” (input type=”text” name=”nuevocampo” … ).

Es importante recordar que con el valor del atributo “name”, obtendremos el valor que haya rellenado el usuario en dicho campo.

Dentro de la etiqueta “label”, indicamos el nombre del campo, que luego vera el cliente en el formulario de contacto.

nuevocampos

Después, vamos al fichero:

/controllers/front/ContactController.php

Y debajo del siguiente código:

if (Tools::isSubmit('submitMessage')) {

Añadimos el siguiente código:

$nuevocampo = Tools::getValue('nuevocampo');

Comentar a modo de información, para el lector del blog que con:

Tools::getValue('nuevocampo');

Obtenemos el valor del campo que tiene asignado en el atributo “name” el valor “nuevocampo”, el valor que obtenemos luego lo almacenamos en la variable “$nuevocampo“.

En el mismo fichero, buscamos esto:

$var_list = array(
'{order_name}' => '-',
'{attached_file}' => '-',
'{message}' => Tools::nl2br(stripslashes($message)),
'{email}' => $from,
);

Y lo dejamos así:

$var_list = array(
'{order_name}' => '-',
'{attached_file}' => '-',
'{message}' => Tools::nl2br(stripslashes($message)),
'{email}' => $from,
'{nuevocampo}' => Tools::nl2br(stripslashes($nuevocampo)),
);

De esta manera, podemos llamar a la variable “nuevocampo” en los “emails”.

Luego, en el mismo fichero, buscamos la siguiente parte del código:

$this->context->smarty->assign(array(
'contacts' => Contact::getContacts($this->context->language->id),
'message' => html_entity_decode(Tools::getValue('message'))
));

Y lo dejamos así:

$this->context->smarty->assign(array(
'contacts' => Contact::getContacts($this->context->language->id),
'message' => html_entity_decode(Tools::getValue('message')),
'nuevocampo' => html_entity_decode(Tools::getValue('nuevocampo'))
));

Con esto, enviamos el valor al formulario de contacto, para en caso de que enviemos el formulario y no se complete por algún requerimiento o fallo al rellenar los datos el formulario de contacto, no perdamos el valor en pantalla del nuevo campo que hemos agregado.

En el siguiente paso, vamos a indicar que el valor del nuevo campo se imprima en el email que recibe el usuario, para eso vamos al fichero:

/mails/es/contact-form.html

/themes/tu-plantilla/mails/es/contact-form.html

(También, deberíamos editar el fichero contact-form.txt, pero en este caso solo comentaremos el “.html”)

Y buscamos esto:

<tr>
<td align="left">Su mensaje se envío.<br><br /> Mensaje: {message}<br /><br />
Referencia del pedido: {order_name}<br /><br /> Archivo: {attached_file}</td>
</tr>

Y debajo añadimos esto:

<tr>
<td align="left">
Valor del nuevo campo: <strong>{nuevocampo}</strong>
</td>
</tr>

Los ficheros contact-form.html y contact-form.txt corresponden al email de confirmación, que recibe el usuario, una vez enviado el formulario de contacto.

Ahora, vamos a editar el fichero:

/mails/es/contact.html

/themes/tu-plantilla/mails/es/contact.html

(También, deberíamos editar el fichero contact.txt, pero en este caso solo comentaremos el “.html”)

Donde buscaremos el siguiente código:

<tr>
<td align="left">Dirección de E-mail: <a href="mailto:{email}"><strong>{email}</strong></a><br />
<br />
Mensaje: {message}</td>
</tr>

Y debajo añadimos esto:

<tr>
<td align="left">
Valor del nuevo campo: <strong>{nuevocampo}</strong>
</td>
</tr>

Los ficheros contact.html y contact.txt, hacen referencia al email que recibes tú o el contacto establecido en la pestaña “Clientes -> Contacto”, una vez que el usuario ha enviado el formulario de contacto.

En otro capítulo, explicaremos como visualizar el valor del nuevo campo en el panel de administración, ya que en este ejemplo el valor del nuevo campo solo se refleja en el email.

Esta prueba, ha sido realizada bajo Prestashop 1.5.4.1.

Un comentario sobre “Guía – Añadir nuevos campos al formulario de contacto en Prestashop 1.5”

  1. Victor,

    excelente post. Espero que te animes pronto a contarnos como se puede mostrar el campo en el backoffice, sería de enorme ayuda.

    Gracias por todo,

Los comentarios están cerrados.