Prestashopcabecera cumplir con la lopd en prestashop

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.

 

check lopd en formulario de contacto en prestashop 1.6

 

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.

 

check lopd en registro prestashop 1.6

 

Os hago la reseña que los número de línea de código incluidos pueden ser aproximados, ya que depende de cada plantilla instalada.

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.

93 Comentarios

  1. wooow! Muchas gracias. Voy a probarlo. Una pregunta, ¿se podría usar esto mismo para añadir el checkbox al bloque de suscripción del newsletter?

  2. Hola muchas gracias por tu tutorial pero tengo un problema, he seguido todos la pasos que has indicado pero ahora caundo intentio manda un mensaje me sale el siguiente mensaje: Error 1

    Si acepta los términos del mensaje Privacidad de los datos del cliente, haga clic en la casilla de verificación que aparece a continuación.
    pero no aparece dicho chekout ni antes ni despues .
    ¿prodrias ayudarme?
    Muchas gracias de antemano

  3. Hola Peter.
    En primer lugar disculpa la demora en la respuesta.
    Pienso que debe funcionar de igual forma si incluyes el hook en el fichero tpl del modulo newsletter que tengas.
    Si lo pruebas puedes comentar aquí el resultado.
    Un saludo.

  4. Hola Julian.
    Disculpa la demora en la contestación, no se si ya habrás solucionado el problema.
    Lo que se me ocurre es que pueda ser por la caché, has vaciado la caché de prestashop ? Y si es así, prueba a vaciar la caché de tu navegador, yo con chrome últimamente estoy experimentando problemas con la caché con cambios realizados en web y no me los actualiza. También puedes probar con otros navegadores a ver.
    Qué versión de prestashop tienes instalada ?
    Un saludo.

  5. Gracias Juan por la aportación. Está muy bien explicado (sin liarnos) y funciona perfectamente :). Un abrazo.

  6. Antes de nada muchísimas gracias por este tutorial.
    Tengo una consulta. Tengo que desactivar la aceptación de la política de privacidad en el carrito o registro, porque ya me la hace otro módulo de one-page-checkout. La cosa es que sí que quiero que se acepte en el formulario de contacto. ¿Cómo se podría desanclar ese hook del módulo de one-page-checkout?

  7. Hola Javier.
    Muchas gracias por tu comentario.
    Pues mira, no sé el módulo onepagecheckout que estás usando, pero creo que para desactivarlo tendrías que entrar en el php del módulo y allí comentar la parte del checkout, ya que pienso que estárá integrada en el mismo módulo, al menos por los que he probado yo.
    Ya me comentas si lo has encontrado.

  8. Yo tengo una duda, resulta que ya tenia creado el ContactController.php con el codigo que genera el modulo eicaptcha. Total, que si intento añadir los dos codigos siempre obtengo pantalla en blanco. El codigo que mete el eicaptcha es este. ¿Se podrian añadir los dos de alguna forma?. Gracias.

    redirect_after)) {
    parent::redirect();
    }
    if (!$this->content_only && ($this->display_header || (isset($this->className) && $this->className))) {
    parent::initHeader();
    }
    parent::initContent();
    if (!$this->content_only && ($this->display_footer || (isset($this->className) && $this->className))) {
    parent::initFooter();
    }
    parent::display();
    die;
    }
    }

  9. Buenas!

    He hecho todos los pasos y funciona correctamente, el problema es que cuando borro el caché de prestashop desde las opciones de Rendimiento me desaparece el checkbox del contacto, y no vuelve a aparecer hasta que borro de nuevo el archivo class_index.php ¿alguna idea de qué puede estar pasando?

    Gracias

  10. Hola Jose.
    No es compatible con prestashop 1.7 porque el módulo que utilizo “Bloque de privacidad de datos del cliente” no existe en la nueva versión.
    Próximamente colgaré algo parecido para 1.7.
    Un saludo.

  11. Muchas gracias por el tutorial, funciona bien excepto por que aunque no se seleccione el checkbox el mensaje de contacto se envía igualmente.

    ¿Sabes a qué es debido esto y cómo podría solucionarlo?

    Un saludo.

  12. Hola Joan.
    Has probado a reinicializar el módulo que hemos manipulado ?
    En el listado de módulos, despliegas el botón Modificar a la derecha del módulo y pulsas Reinicializar.
    Dime algo si se te soluciona o sigo estudiándolo.

  13. Buenas tardes Juan Carlos,

    Sí, he reiniciado el módulo y sigue igual.

    ¿Tienes alguna idea de por qué pasa esto?

    Muchas gracias.

  14. Buenos días.
    Te invito a que pruebes la actualización que he puesto con otro método, que no tiene errores e incluye mensaje de error del sistema si no se activa el check

  15. Hola Joan.
    Revisa la actualización que he puesto con otro método más sencillo y completo que soluciona el problema.

  16. Hola Alvaro.
    He puesto una actualización del post usando otro método y el mismo funciona perfectamente junto al módulo eicaptcha. Comprobado.

  17. Hola Juan.
    Te invito a que pruebes el nuevo método que he publicado como actualización que funciona perfectamente y además, incluye error del sistema para avisar que tienes que aceptar el check.

  18. Muchas gracais por tu trabajo Juan CM mora

    Casi me funciona perfecto…pero…

    Cuando no marco el check de aceptar la prolitica de privacidad en el formulario de contacto y le doy a enviar, efectivamente no lo envía y da un error superior en rojo (como deberia ser) pero pone en este error “Error 1” nada más…ni mensaje ni nada…

    Puedes probarlo aquí:
    https://www.chasanga.es/contactanos
    ¿Sabes por que no pone el mensaje de “Debes aceptar la politica de privacidad”?

  19. Hola Carlos.
    Comprueba que has implementado bien las lineas 35, 38 y 39 en el fichero ContactController.php (si no lo has hecho con override y posteriormente has actualizado prestashop se te va a machacar el script introducido).
    Aquí es donde se controla ese error, si no está activado el check visualiza el mismo).
    Un saludo.

  20. Gracias.

    En el ContacController.php lo modifiqué, lo tengo así:

    class ContactControllerCore extends FrontController
    {
    public $php_self = 'contact';
    public $ssl = true;

    /**
    * Start forms process
    * @see FrontController::postProcess()
    */

    public function postProcess()
    {
    if (Tools::isSubmit('submitMessage')) {
    $extension = array('.txt', '.rtf', '.doc', '.docx', '.pdf', '.zip', '.png', '.jpeg', '.gif', '.jpg');
    $file_attachment = Tools::fileAttachment('fileUpload');
    $message = Tools::getValue('message'); // Html entities is not usefull, iscleanHtml check there is no bad html tags.
    $lopd = Tools::getValue('lopd');
    if (!($from = trim(Tools::getValue('from'))) || !Validate::isEmail($from)) {
    $this->errors[] = Tools::displayError('Invalid email address.');
    } elseif(!$lopd) {
    $this->errors[] = Tools::displayError('Debes aceptar nuestra política de privacidad');
    } elseif (!$message) {
    $this->errors[] = Tools::displayError('The message cannot be blank.');
    } elseif (!Validate::isCleanHtml($message)) {

  21. Solucionado Carlos.
    Algo había mal en tu ContactController.php, te he puesto la función postProcess() limpia en un override y ahora te funciona perfectamente.
    Un cordial saludo.

  22. Howdy! Someone in my Facebook group shared this website
    with us so I came to give it a look. I’m definitely loving the information. I’m bookmarking and will be tweeting this to my followers!
    Fantastic blog and amazing design and style.

    My web site; cannabis gummies

  23. Hello! This is my 1st comment here so I just wanted to give a quick shout out and tell you I genuinely
    enjoy reading through your blog posts. Can you
    recommend any other blogs/websites/forums that cover the same
    topics? Thanks a ton!

    Have a look at my webpage :: weed near me

  24. When I originally commented I appear to have clicked on the -Notify me when new comments
    are added- checkbox and now whenever a comment is added I receive 4 emails with
    the same comment. There has to be an easy method you
    are able to remove me from that service? Appreciate it!

    My page delta 8 THC

  25. Undeniably believe that which you stated. Your favorite justification appeared to be
    on the web the easiest thing to be aware of. I say to
    you, I certainly get irked while people think about worries that they just do not
    know about. You managed to hit the nail upon the top and also defined out the whole thing
    without having side effect , people could take a signal.
    Will probably be back to get more. Thanks

    Also visit my homepage – THC Gummies

  26. When I originally commented I appear to have clicked the
    -Notify me when new comments are added- checkbox and now each
    time a comment is added I receive 4 emails with the same
    comment. There has to be a means you can remove me from that service?
    Thanks!

    Feel free to visit my web-site :: delta 8 THC gummies

  27. I’m curious to find out what blog platform you happen to be working with?
    I’m having some minor security issues with my latest website and I’d like to find something more secure.

    Do you have any solutions?

  28. Pretty part of content. I just stumbled upon your blog and in accession capital to assert that I get in fact
    loved account your blog posts. Anyway I’ll be subscribing for your augment and even I success you get right of entry to consistently quickly.

  29. Undeniably imagine that that you said. Your favourite reason seemed to
    be at the web the simplest factor to bear in mind
    of. I say to you, I certainly get irked whilst other folks think about concerns that they plainly don’t
    recognise about. You controlled to hit the nail upon the highest and also defined out the whole thing with no need side effect , other
    people can take a signal. Will likely be again to get more.
    Thanks

    Here is my homepage :: cbd gummies for pain

  30. I’m not certain the place you’re getting your information, however good topic.

    I must spend a while finding out much more
    or understanding more. Thank you for great info I used to be searching for this information for my mission.

    Also visit my site … best kratom

  31. I don’t even know how I ended up here, but
    I thought this post was great. I don’t know who you are but
    definitely you are going to a famous blogger if you aren’t already 😉 Cheers!

    Feel free to visit my web-site cbd for sale

  32. First off I would like to say fantastic blog! I had a quick question which I’d like to ask if
    you don’t mind. I was interested to know how you center yourself
    and clear your thoughts prior to writing. I’ve had trouble clearing my mind in getting my thoughts out there.
    I truly do enjoy writing but it just seems like the first 10 to 15 minutes tend to
    be wasted just trying to figure out how to begin. Any recommendations or hints?
    Thank you!

    Here is my website – cbd capsules for pain

  33. I know this web page gives quality dependent articles or reviews and other material, is there any other
    site which presents these kinds of information in quality?

  34. My partner and I absolutely love your blog and find many of your post’s to be exactly I’m looking for.
    Do you offer guest writers to write content for you?

    I wouldn’t mind writing a post or elaborating on a few of the subjects you write regarding here.
    Again, awesome weblog!

  35. Hey There. I found your blog using msn. This is an extremely well written article.
    I will be sure to bookmark it and come back to read
    more of your useful information. Thanks for the post.
    I’ll certainly comeback.

  36. Everything is very open with a very clear clarification of the issues.
    It was definitely informative. Your site is very helpful.
    Thank you for sharing!

  37. Hello just wanted to give you a brief heads up and let you know a few of the pictures aren’t loading correctly.

    I’m not sure why but I think its a linking issue. I’ve tried it
    in two different web browsers and both show the same
    results.

  38. Quality articles or reviews is the crucial to invite the people to pay
    a visit the website, that’s what this website
    is providing.

  39. Your style is unique in comparison to other folks
    I have read stuff from. Many thanks for posting when you’ve got the opportunity, Guess I’ll just
    bookmark this page.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Publicar comentario