En este tutorial vamos a explicar como añadir nuevos campos en el formulario de contacto de una tienda Prestashop. Para ello vamos a tener que modificar tres ficheros en el servidor:
- Plantilla del formulario que se mostrará en la página
- Controlador del servidor que recibe la petición desde el formulario y se encarga de realizar el envío del correo
- Plantilla del correo que se enviará al cliente y al administrador
Durante el tutorial vamos a seguir un ejemplo que será añadir un nuevo campo para que el cliente introduzca su ciudad.
Añadir nuevo campo en el formulario
Para empezar vamos a añadir un nuevo ‘input’ en nuestro formulario de contacto. Para esto hay que editar el fichero ‘~/theme/default/contact-form.tpl‘, en caso de tener activado el tema por defecto, o sion el mismo fichero dentro de la carpeta del tema que esté activo. Deberemos añadir las siguientes líneas para que aparezca el nuevo campo:
1 <p class="text">
2 <label for="provincia">Provincia</label>3 <input type="text" id="provincia" name="provincia" value="" />
4 </p>
Este campo tendremos que añadir en el lugar del formulario que consideremos oportuno. El siguiente paso será editar el controlador para que recoja el valor introducido.
Modificar controlador ContactController
En el controlador deberemos recuperar el valor introducido por el usuario en el formulario y añadirlo en la lista de parámetros que se van a enviar en el correo final. Para ello debemos editar el fichero “~/Controllers/front/ContactController.php‘ en dos pasos:
- Recuperar el valor introducido. En este caso lo hemos llamado ‘provincia':
1 $provincia = Tools::getValue('provincia');
- Añadir el nuevo valor a los parámetros con el que se rellenará el correo. Esto se hará añadiendo un nuevo campo en el array ‘mail_var_list‘ con el valor que hemos recogido en el punto anterior:
1 $mail_var_list = array(
2 '{provincia}' => $provincia,
3 '{email}' => $from,
4 '{message}' => Tools::nl2br(stripslashes($message)),
5 '{id_order}' => $id_order,
6 '{order_name}' => $order->getUniqReference(),
7 '{attached_file}' => isset($_FILES['fileUpload'], $_FILES['fileUpload']['name']) ? $_FILES['fileUpload']['name'] : ''
8 );
NOTA: estos cambios se deben hacer después de comprobar que el formulario no está vacío en la línea 117:
1 if (!empty($contact->email))
Dentro de esta sentencia debermos modificar los campos que tiene nuestro formulario como se indica en este punto.
Editar plantilla del correo que se envía al usuario
El último paso será editar la plantilla del correo que se el envía finalmente al usuario para que le aparezca la información del nuevo campo.
Para esto hay que editar el fichero de la plantilla del correo ‘contact.html’ y también el fichero ‘contact.txt’ para cada uno de los idiomas que tengamos configurados en la tienda. Estos ficheros los podemos encontrar en la carpeta ‘~/mails/‘. En esta carpeta existirá una carpeta por cada uno de los idiomas que estén isntalados. Debemos escoger los idiomas con lo que trabajamos y editar los ficheros indicados para cada uno. En este ejemplo vamos a añadírselo a la plantilla en castellano.
Por tanto vamos a editar primero el fichero ‘~/mails/es/contact_form.html‘ añadiendo estas líneas en el lugar de la tabla donde queramos que aparezca la información:
1 <tr>
2 <td align="left">Provincia: {provincia}</td>3 </tr>
El último paso será editar la plantilla de correo en texto plano ‘~/mails/es/contact_form.txt‘ añadiendo la siguiente línea:
1 Provincia: {provincia}
Con estas dos modificaciones ya aparecerá el nuevo campo en el correo que le llega al cliente tras rellenar el formulario de contacto.
Plantillas correo enviado al administrador
Cuando un cliente rellena un formulario de contacto la información le llegará al admistrador en un correo y al cliente en otro. Estos correos son diferentes. El que le llega a los clientes lo hemos configurado con las plantillas del ejemplo anterior. Ahora para editar la plantilla del correo que se envía al dueño de la tienda hay que hacer esos mismos cambios pero en los fichero ‘~/mails/es/contact.html‘ y ‘~/mails/es/contact.txt‘. Con esto el administrador también recibirá la información del nuevo campo.
Realizando estas modificaciones ya podrás ver el nuevo campo en el formulario de contacto y el valor que el cliente rellené aparecerá en el correo que se le envía tanto a él como al administrado de la tienda.
Espero que os sea de ayuda el tutorial. Para cualquier duda, queja o sugerencia dejadnos vuestros comentarios.
Deja tu comentario