Añadir campo de teléfono al formulario de contacto en Prestashop 1.7

En su momento estuvimos comentando a líneas generales que teníamos que hacer para añadir un campo nuevo al formulario de contacto: Añadir campos al formulario de contacto en Prestashop 1.7

En este TIP vamos a ejecutar parte de dicha explicación. Vamos añadir un campo para que los usuarios que contacten con la tienda puedan añadir un número de teléfono y nosotros podamos recibirlo.

En este pequeño ejemplo, no vamos a guardar el dato en la base de datos ni mostrarlo dentro del panel de administración, simplemente vamos a mostrar el campo en la plantilla de visualización del formulario de contacto y mostrar el campo en los emails que envía el formulario.

Documento construido con Prestashop 1.7.2.4 y la plantilla por defecto de Prestashop.

Añadir campo a la plantilla de visualización del formulario de contacto.

Vamos al fichero: /themes/classic/modules/contactform/views/templates/widget/contactform.tpl

Y por ejemplo debajo de la línea del campo del email:

Código campo email

Añadimos la siguiente instrucción:

Campo Teléfono

No se os olvide que en el name del campo hemos colocado “telefonoc“, ya que luego en base al name vamos a recoger el valor.

Si guardamos los cambios, y nos vamos a la pestaña Parámetros Avanzados -> Rendimiento y limpiamos la cache, veremos que ya aparece el nuevo campo en el formulario de contacto.

Campo disponible en el formulario de contacto

A continuación, vamos a recoger el valor de dicho campo y enviarlo por email.

Recoger valor del campo nuevo y enviarlo por email en Prestashop

Aunque vamos a modificar la clase original del módulo, recordar que lo optimo y recomendado es hacer un override de dicha clase en el directorio /override/modules/.

En el fichero: modules/contactform/contactform.php nos vamos a fijar en la función:

public function sendMessage()

Donde lo primero que vamos hacer es recoger el valor del campo del formulario de contacto, añadiendo dentro de la función la siguiente línea:

$telefono_contacto= Tools::getValue('telefonoc');
Recogemos valor del formulario

Pasamos a una variable que hemos creado y llamado $telefono_contacto el valor del campo del teléfono del formulario de contacto. Fijaros que dentro de: Tools::getValue hemos colocado el name del campo, por eso os he dicho anteriormente que no se os olvidara.

Ahora vamos añadir la variable $telefono_contacto a la lista de variables que se envían la plantilla de email del formulario de contacto.

Dentro de la misma función sendMessage() buscamos la siguiente línea de código:

$var_list = [
'{order_name}' => '-',
'{attached_file}' => '-',
'{message}' => Tools::nl2br(stripslashes($message)),

Y añadimos nuestro campo:

'{telefonoc}' => $telefono_contacto,

Creamos una variable para poder usar en las plantillas de emails {telefonoc}, que contendrá el valor del teléfono que hemos almacenado en la variable  $telefono_contacto

Campo teléfono para los emails

En este ejemplo hemos editado directamente la clase, pero recordar que lo óptimo es hace un override de dicha clase.

A continuación, mostrar esa variable en las plantillas de email, que son dos:

contact_form.html/contact_form.txt -> Email que recibe el cliente.

contact.html/contact.txt -> Email que recibes tú. 

Por ejemplo, editamos contact.html y debajo de:


<span style="color:#333"><strong>Archivo adjunto:</strong></span> {attached_file}

Añadimos:


<span style="color:#333"><strong>Telefono:</strong></span> {telefonoc}

Mostrar campo en el email

Editamos el fichero: contact_form.html y hacemos lo mismo que hemos realizado para el contact.html

Los emails los podéis editar tanto desde el panel de administración: Editar emails en el panel de administración   como editando los emails manualmente:

/mails/prefijoIdioma
/themes/classic/mails/prefijoIdioma 

Un comentario sobre “Añadir campo de teléfono al formulario de contacto en Prestashop 1.7”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *