Hola a todos.

Escribo este artículo para compartir con todos vosotros por el pequeño quebradero de cabeza que me ha llevado añadir un simple checkbox de “He leido y acepto la Política de Privacidad” o mensaje similar en el formulario de contacto de Prestashop (en mi caso la versión 1.6.1.12) según indica la Ley de Protección de Datos.

Voy a usar el módulo “Bloque de privacidad de datos del cliente” (customerprivacy) y así nos aseguramos que va a funcionar en la versión de prestashop que estemos usando.

 

 

En primer lugar vamos a añadir el Hook del módulo en el fichero “contact-form.tpl“, que se encuentra en la carpeta raíz de nuestro tema, de la siguiente forma:

A continuación hacemos un “override” del fichero “ContactController.php”. Para no liaros no voy a poner ningún enlace que os explique qué es un override ni como se usa.

Simplemente os voy a decir que teneis que crear un fichero llamado “ContactController.php” en la siguiente carpeta de vuestro prestashop: /override/controllers/front/ y dentro de este fichero que habeis creado le colocais este código:

Digamos que la función de un override es extender con funciones nuevas a un fichero original php desde otro fichero externo y así evitar que cuando se actualice prestashop o el módulo con el que estamos trabajando se modifique el fichero php original y se borre nuestra nueva función o funciones.

Finalmente para que funcione correctamente el checkbox de “Aceptar Política de Privacidad” en el formulario de contacto de Prestashop para cumplir con la LOPD borramos la caché de Prestashop borrando el fichero “class_index.php” que se encuentra dentro de la carpeta /cache/.

Después ya entramos en el módulo “Bloque de privacidad..” y colocamos el texto que queramos así como el enlace a la página CMS de nuestra Política de Privacidad.

Espero que os haya gustado y os funcione.

 

ACTUALIZACIÓN (13/06/2018)

Hola a todos.

Debimos a los errores que me he ido encontrando para el check de aceptación para el formulario en prestashop usando el módulo ‘Bloque de privacidad de datos del cliente’ gracias a los comentarios de los usuarios, voy a poner otro método descubierto, muy sencillo y eficaz.

Este método mejora el anterior incluyendo un mensaje de error en el mismo formato que presenta prestashop, una ventana roja (según el tema) avisando de la necesidad de marcar la casilla.

1.- Colocamos el check en el archivo tpl del formulario (/themes/”tu-tema”/contact-form.tpl), añadiendo el siguiente código antes del botón submit (botón enviar):

Como observación deciros que esta maquetación la he realizado para que se ajustase bien a la plantilla usada, y puede ser necesario ajustarlo según la que uses. También puede modificar el texto usado a tu gusto.

En el link usado ‘getCMSLink(7)’ teneis poner en vez del 7 el id de la página CMS de vuestra Política de Privacidad.

 




Archivo ContactController.php

2.- Vamos a modificar el archivo /controllers/front/ContactController.php (yo siempre aconsejo usar override, pero para no liar modificamos el mismo fichero):

Tienes que añadir las lineas 35, 38 y 39.

Comentaros que la primera vez que lo probé no paraba de saiirme un error 500 en la web y era debido simplemente a que me faltaba cerrar unas llaves (}), comprobarlo todo bien ya que funciona sin problema.

Por supuesto también podeis modificar el mensaje de error que yo he colocado.

3.- Finalmente es importante borrar el siguiente fichero de caché, ya que hemos realizado modificaciones en archivos php: /cache/class_index.php. No os preocupeis de borrarlo ya que prestashop lo vuelve a generar pero ya actualizado.

Si te atreves con el check en el registro

En este caso es igual de simple, se trata de modificar el archivo /themes/”tu-tema”/authentication.tpl y añadir un código similar (depende si teneis que retocar la maquetación según vuestra plantilla:

Las líneas a añadir son de la 523 a la 527.

 

Archivo AuthController.php

Después añadir el siguiente código en el archivo ‘/controllers/front/AuthController.php

Las lineas a añadir son de la 389 a la 391 dentro de la clase protegida processSubmitAccount(). Debido a ser protected no es posible realizar un override.

 

 

Os hago la reseña de buscar donde colocar el código correctamente en cada archivo, por la importancia que ello conlleva.

Y repito, es importante que os fijeis en abrir y cerrar bien todas las llaves para evitar el error 500 en vuestra web.

Pues esto es todo, espero que os sirva de ayuda y pido disculpas del anterior que estaba produciendo errores.