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 

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

Responder a Carlo Cancelar la respuesta

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