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

Introducción (leer atontados)

Este documento no es una guía, como la que se hizo en su momento para Prestashop 1.5, donde en el año 2013, explicábamos como añadir un campo al formulario de contacto.

Simplemente es un documento donde se indican los ficheros básicos a modificar para añadir un campo nuevo en el formulario de contacto y enviar esos datos por email. Además de almacenar el valor en la base de datos y poder verlo en el panel de administración de la tienda.

No quiero decepciones y dejo bien claro que solo indico nombre de ficheros y mini explicación. Como aventureros que sois en el universo de Prestashop, os invito a toquetear y a unirse a la aventura del universo de Prestashop.

TIP construido bajo Prestashop 1.7.2.4 con la plantilla por defecto. Siendo Prestashop 1.7, aunque haya pasado una larga temporada desde su estreno, sigue siendo medianamente nueva, es posible que los ficheros cambien en un futuro. Lo digo para que no os llevéis sorpresas.

Datos a modificar para añadir el campo al formulario de contacto

Base de datos:

Tabla -> ps_customer_message donde añadimos el campo para luego poder verlo en panel de administración.

Ficheros FrontOffice (tienda):

/themes/classic/modules/contactform/views/templates/widget/contactform.tpl 
-> En este fichero debemos añadir el campo que se mostrara en la tienda cuando el cliente vaya a visualizar el formulario de contacto.

/modules/contactform/contactform.php -> Aquí recogemos los datos del valor del campo del formulario de contacto, lo validamos y hacemos posible la posibilidad de poder mostrar el valor del campo que ha enviado el cliente en el email del formulario de contacto. Además de enviar propiamente el formulario. Recordar que cuando vayáis a modificar el fichero, lo óptimo es hacer un override depende modificar el original.

Dentro de los emails de Prestashop, los correspondientes al formulario de contacto son: contact_form.html/contact_form.txt/contact.html/contact.txt -> Aquí debemos añadir la variable que hemos posibilitado para los emails en el fichero contactform.php  para mostrar el valor del campo en cuestión.

Ficheros panel de administración:

/controllers/admin/AdminCustomerThreadsController.php-> El campo que hemos añadido previamente en la base de datos lo declaramos en el controlador para luego poder usarlo, por ejemplo, en el fichero message.tpl. Recordar que lo óptimo es hacer un override y no modificar el original.

/carpeta_administracion/themes/default/template/controllers/customer_threads/helpers/view/message.tpl -> Este fichero se debe modificar para mostrar en el panel de administración el valor del campo  que ha enviado el cliente en el formulario de contacto y ha quedado almacenado en la base de datos. Recuerda que de un modo u otro el controlador que hemos comentado va vinculado con el fichero en cuestión.

Clases:

/classes/CustomerMessage.php -> Añadimos el campo que hemos añadido en la tabla ps_customer_message. De esta manera cuando creemos una instancia de la clase en otra parte, podemos guardar el valor del campo en la base de datos. Recordar que lo óptimo es construir un override depende modificar la clase original.

Ha sido un repaso muy rápido, por lo que existe la posibilidad de que me haya saltado accidentalmente algún fichero.

Por otro lado, os dejo una pequeña guía de código: Añadir campo de teléfono al formulario de contacto en Prestashop 1.7  que contempla únicamente los pasos de añadir al formulario el campo y de enviarlos por email (no contempla ni el guardado en la base de datos, ni el mostrarlo en el panel).