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}?{else}&{/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:
¡También podéis consultarnos por aquí y os ayudaremos en lo que podamos!
Hola.
He realizado pasos a paso y no funciona, cuando pulso enviar sin marcar el check no muestra la ventana de advertencia. Puede verificar que está todo correcto?
Gracias y saludos.
PD: En el punto 1, al principio del bloque falta la etiqueta {literal} y en el punto 3 falta cerrar la etiqueta p
Me ha funcionado perfectamente, pero el script que termina con {/literal} debería empezar por {literal}.
Pues yo he seguido los pasos exactamente igual y no me ha funcionado :( es como si el script no hiciera nada y por consiguiente me manda el formulario aunque esté la casilla desmarcada, a alguien mas le ha pasado? Un saludo y gracias
Muchas gracias por la ayuda, me ha servido y mucho, pero …. no habría manera de adaptarlo al registro de clientes=???? pleaseee. gracias, saludos.
Para el registro de clientes, utiliza el módulo "Bloque de privacidad de datos del cliente".
Necesito que enlace con política de privacidad y no con términos y condiciones. ¿Cómo podría hacerlo?
En preferencias-Pedidos
Le asignas el cms que tengas para ello.
Un saludo.
Hola buenas, he introducido y el código y va perfecto, pero el único fallo que encuentro es que el formulario lo envía igualmente aunque no se seleccione la casilla, ¿cómo se puede cambiar por favor? ¡Gracias!
Me ocurre lo mismo. Se envía el formulario sin marcar la casilla. ¿Cómo lo arreglamos?
Hola. he seguido los pasos que se mencionan. Y no consigo que me funcione.
Al hacer click me lleva a la pagina de los términos y condiciones pero no me lo muestra en un pop-up o ventana emergente.
Por otra parte aunque no seleccione el ckeckbox me envía el formulario.
Trabajo con la versión 1.6.1.14 de Prestashop. ¿A alguien le sucede lo mismo?
Solucionado:
He tenido que añadir las referencias a estos dos archivos en el header.tpl
jquery.fancybox.css
jquery.fancybox.js
Ignoro porque pero en la página de Contacto no las referenciaba y en la de Compra del carrito sí.