Prestashop 1.6: Adaptar el formulario de contacto a la LOPD con un "he leído y acepto..."

Para que nuestro formulario de contacto cumpla con la LOPD (Ley Orgánica de Protección de Datos) el usuario tiene que aceptar explícitamente que ha leído y acepta los términos y condiciones citados en la política de privacidad de la página web. Para ello, necesitamos incluir un check box al final del formulario con el texto de "He leído y acepto los términos y condiciones y la política de Privacidad" o algo similar.
Si el usuario no ha seleccionado este check box, no se le debe permitir enviar el mensaje y se le debe mostrar un aviso indicándole que debe aceptar las condiciones.
Además, con nuestra solución podrá acceder a estos términos y condiciones con un pop-up o ventana emergente, sin salir de la página del formulario.



1. Deberemos ir al archivo contact-form.tpl de nuestra plantilla e incluir esto al final del archivo:
<script type="text/javascript">
    $('document').ready(function() {
        // desactivo boton envio
        $('#formcontacto').submit(function() {
          if ($("#acepta_lopd_form").is(":checked")) {
            $('#submitMessage').hide()
            return true; 
          } else  {
            alert ("{/literal}{l s="If you agree to the terms in the Customer Data Privacy message, please click the check box below."}{literal}");
            $('#submitMessage').show()
            return false;
          }
        });
    });
</script>
{/literal}

2. En el mismo archivo, modificaremos el formulario. Cambiaremos la línea:
<form action="{$request_uri|escape:'htmlall':'UTF-8'}" method="post" class="contact-form-box" enctype="multipart/form-data">
    Por esta otra:
 <form action="{$request_uri|escape:'htmlall':'UTF-8'}" id="formcontacto" name="formcontacto" method="post" class="contact-form-box" enctype="multipart/form-data">
 Para añadir un nombre y un id al formulario.

3. Añadimos el checkbox en el formulario, después del textarea (mensaje) y antes del submit (botón de Enviar):

<p class="checkbox" id="security_informations">
     <input id="acepta_lopd_form" type="checkbox" value="1" {if isset($smarty.post.acepta_lopd_form) AND $smarty.post.acepta_lopd_form == 1}checked="checked"{/if}  name="acepta_lopd_form">
      <label for="acepta_lopd_form">{l s='I agree to the'} </label> <a href="{$link->getCMSLink(Configuration::get('PS_CONDITIONS_CMS_ID'))}{if Configuration::get('PS_REWRITING_SETTINGS') == 1}&#63;{else}&amp;{/if}content_only=1" class="iframe">{l s='Privacy Policy'}</a> {l s='and will adhere to them unconditionally.'}

Estamos diciéndole que el enlace a los términos y condiciones va a ser el que hayamos definido desde el panel de administración: 
{$link->getCMSLink(Configuration::get('PS_CONDITIONS_CMS_ID'))},
pero cogiendo sólo el contenido textual, sin cabecera ni pie:
content_only=1.

4. Después del checkbox y antes del submit, añadiremos el siguiente script, para que las condiciones se abran en una ventana emergente:

<script type="text/javascript">
$(document).ready(function() {
      $("a.iframe").fancybox({
          'type' : 'iframe',
          'width':900,
          'height':600
      });
  });
</script>

Y eso es todo. Si tenéis cualquier duda o estáis usando una versión de Prestashop anterior a la 1.6., os aconsejo que echéis un vistado al foro de Prestashop:

http://www.prestashop.com/forums/topic/244467-adaptar-el-formulario-de-contacto-a-la-lopd-con-un-check/

¡También podéis consultarnos por aquí y os ayudaremos en lo que podamos!