IP del cliente en el email del formulario de contacto en Prestashop

Aporte del usuario Masteries de la Comunidad de Prestashop traducido del idioma de Shakespeare al idioma de Cervantes con información adicional.

Con este manual para Prestashop cuando nos envíen un mensaje mediante el formulario de contacto de Prestashop podremos ver en el email recibido la IP de procedencia de la persona que ha enviado dicho mensaje.

Email recibido

Aunque inicialmente el aporte es para Prestashop 1.6 con la plantilla por defecto, al final de la entrada haremos algunas aclaraciones sobre el mismo para Prestashop 1.7

El primer paso es construir un override del controlador/controllers/front/ContactController.php

1 – Vamos al directorio: /override/controllers/front/ 
2 – Creamos un fichero con nombre: ContactController.php para definir el override.

Definimos el contenido del override del siguiente modo:

Definiendo override del controlador

Dentro del override del controlador vamos a copiar del original:  /controllers/front/ContactController.php la función:  public function postProcess() y la pegamos dentro del override que hemos creado.

Pegar función
Pegar función

Dentro de la función que hemos pegado, vamos a buscar las variables que podemos usar en los emails del formulario de contacto.

Y añadimos la siguiente:

Quedando del siguiente modo:

Código modificado

De esta manera podremos usar en los emails la variable {ip_cliente} para obtener la ip desde donde se ha enviado el formulario de contacto.

A la variable {ip_cliente} le estamos pasando la IP de procedencia desde donde se ha enviado el formulario de contacto porque le hemos pasado la función getRemoteAddr() de la clase Tools. Si tenemos interés en que hace verdaderamente dicha función lo podéis ver en el fichero /classes/Tools.php buscando la función: public static function getRemoteAddr().

Tras terminar de construir el override, eliminar el fichero /cache/class_index.php para que Prestashop 1.6 reconozca el nuevo override. No os preocupéis porque el fichero borrado se regenera automáticamente.

El siguiente paso es editar los ficheros correspondientes al email que recibes tu cuando te envían un mensaje mediante el formulario de contacto y añadir la variable que hemos creado para ver la IP.

Editamos los ficheros:
mails/es/contact.html y contact.txt
/themes/default-bootstrap/mails/es/contact.html y contact.txt (recordar que el que esta sobreescrito en la plantilla (en en este ejemplo estamos usando la plantilla por defecto que se denomina default-bootstrap) es el que tiene prioridad)

Recordar que también podéis hacerlo desde el panel de traducciones en la pestaña Localización -> Traducciones -> Modificar Traducciones

Traducciones emails PS
Traducciones emails PS
Editar Email
Editar Email

Una vez hemos accedido a los emails para modificarlos, toca añadir la variable: {ip_cliente}

Fichero contact.html

contact.html
contact.html

Fichero contact.txt

contact.txt
contact.txt

Tip valido para Prestashop 1.6 y probado hasta Prestashop 1.6.1.18

Descargar Override construido bajo Prestashop 1.6.1.18

Por si en un futuro actualizan el aporte para Prestashop 1.7 o tenéis dudas sobre el aporte actual, podéis ver el enlace original del aporte en el foro de Prestashop:

https://www.prestashop.com/forums/topic/626268-tutorial-show-customers-ip-address-in-e-mail-from-the-contact-form/


Respecto Prestashop 1.7 (hasta Prestashop 1.7.2.4) por el momento os dejo tres pistas:

Fichero: modules/contactform/contactform.php -> Función public function sendMessage() encontrareis respecto a las variables habilitadas para el uso en los emails lo siguiente:

Donde podemos añadimos:

Para luego hacer uso de la variable {ip_cliente} en los emails.

Evidentemente lo ideal sería siempre que se pueda crear un override de la clase del módulo contactform (contactform.php) en el directorio /overrides/modules/contactform/ para hacer los pertinentes cambios depende tocar la clase original.

Por cierto, para que os detecte el override en PS 1.7 (hasta 1.7.2.4) directamente hacer clic sobre el botón limpiar(vaciar) cache situado en la parte superior de la zona de acceso correspondiente a la pestaña Parámetros Avanzados -> Rendimiento.

Como no todo es un regalo, os dejo investigar para que veáis como se hace un override de una clase un módulo. Por el blog incluso tenéis algún ejemplo.