PrestaShop es uno de los CMS del mundo de las tiendas online más utilizados en Internet, alcanza las 40.000 tiendas online en España y se ha consolidado como el motor del e-commerce.
Hoy voy a empezar una serie de artículos cortos y al grano sobre Prestashop, este tutorial es para implementar el recaptcha de Google en el formulario de contacto.
Tutorial instalar captcha en Prestashop
Si estas aquí es por que habrás recibido una gran cantidad de Spam a tu bandeja de entrada por culpa del formulario de contacto de tu Prestashop. Vamos a ver cómo solucionar este problemilla.
1.- Configurar reCaptcha Google
Nos vamos a https://www.google.com/recaptcha/intro/index.html e introducimos el nombre que le queremos dar al recaptcha y los dominios en los que vamos a utilizarlo como vemos en la siguiente imagen:
Nos guardados la clave de data-sitekey:
2.- Cambiar el contact-form.ptl
Ahora nos vamos al fichero de contact-form.tpl dentro de nuestra plantilla, por ejemplo para la ruta por defecto sería: /public_html/themes/default-bootstrap/contact-form.tpl.
Buscamos el código donde esta el formulario de contacto, si es la plantilla por defecto la línea 148 de código:
<div class=»submit»>
<button type=»submit» name=»submitMessage» id=»submitMessage» class=»button btn btn-default button-medium»><span>{l s=’Send’}<i class=»icon-chevron-right right»></i></span></button>
</div>
Justo encima copiamos las siguientes líneas de código:
<s cri pt src= ‘ https: //www. google. com/recaptcha/api.js’></script>
<div class=»g-recaptcha» data-sitekey=»key»></div>
Donde habría que sustituir donde dice “key” por nuestra clave que nos han dado en el paso 1.
3.- Cambiar el ContactControler.php
Ahora nos vamos al fichero ContactController.php que lo encontraremos en la ruta /public_html/controllers/front y añadimos el siguiente código en negrita para verificar que el recaptcha es correcto:
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’);
$id_order = (int)$this->getOrder();
if (!($from = trim(Tools::getValue(‘from’))) || !Validate::isEmail($from)) {
$this->errors[] = Tools::displayError(‘Invalid email address.’);
// Añadimos estas 2 lineas
} elseif (!($gcaptcha = (int)(Tools::getValue(‘g-recaptcha-response’)))) {
$this->errors[] = Tools::displayError(‘Captcha error’);
Ahora ya no recibirás más correos spam a tu bandeja de entrada, si quieres aprender más sobre este motor de comercio electrónico, no te pierdas este articulo en el que aprenderás a cómo aumentar las en Prestashop.
19 respuestas a «Como poner captcha en PrestaShop en 3 pasos»
buenas tardes amigo en el paso numero 2 no me sale ese archivo me salen los siguientes si me pudieras ayudar:
feaf7622905416eeda21dc0ae96b7763e8088f10.file.contact-form.tpl
cecee388c849eeee0e5b3b756f59cd376319383e.file.contact-form.tpl
c1162984c4bbf8e4cd41f3a1e6de36e21bba6fe9.file.contact-form.tpl
bae53bb673c5ba6a2565a962b340f7d0993d5462.file.contact-form.tpl
b30c92bd2091f3cbafa92c43c74610a3d49dbe74.file.contact-form.tpl
693c95e0d8d48244efbf6203bf9b24654b2d66d7.file.contact-form.tpl
494d7ad3df7b77caee7e88f645549bdc16387ddd.file.contact-form.tpl
1b4d2dffcd21a81ba034617159dac2a5c168b877.file.contact-form.tpl
sabras en cual es
Buenos días Edgar,
No es ninguna de esos ficheros, ¿qué versión de Prestashop utilizas y que theme?
Un saludo
la ruta por defecto para versión 1.5.4 es:
/public_html/themes/default/contact-form.tpl
o bien,
/public_html/themes/nombre del tema propio/contact-form.tpl
Muchas gracias Aika, aunque la versión 1.5.4 es un pelín vieja seguro que a alguien le sirve,
Saludos 🙂
buenas tardes , hice lo que dices y terminé con un error 500 en mi página de contáctenos. si me puedes ayudar te lo agradecería
Buenas Eric,
Tienes mi correo y un formulario de contacto o escribir en los comentarios para cualquier consulta,
Un saludo
Hola David,
Lo de la página de contacto ya lo solucioné en su día pero ahora necesito instalarlo en la página de registro y no tengo ni idea. Es más o menos igual
Hola Nessa,
Algo similar más o menos,
Saludos
Hola, lo he aplicado en dos prestashops 1.6 y en ninguno de los dos se muestra el reCaptcha, todo sigue igual, como si nada…
¿Qué puede ser?
Hola,
Revisa no tengas activado forza compilación o cache en la parte de Rendimiento del backoffice de Prestashop.
Saludos
Aplico el código que comentas pero me da error en la página de contacto y no se abre
gracias
Buenas Violeta,
Enviame un correo y lo veo,
Saludos
Tengo un problema con el captcha, aparece en el formulario pero da igual que lo valides o no.
El código PHP también está incluido pero no sirve para nada.
Un saludo
Hola Emilio,
¿Puedes poner que error te salta?
Un saludo
Hola David, aplico el código que comentas pero me da error en la página de contacto y no se abre.
Un Saludo y Gracias
Buenas Emilio,
Revisa las comillas que sean las correctas, las que son rectas » y no «
Funcionar funciona al 100%,
Un saludo
Buenos días,
Tengo un Prestashop 1.7.5, ¿para poner el captcha en el block_newslettter del footer qué habría que hacer?
Ya he puesto el código que indicas para el archivo «contact-form.tpl» pero no sé dónde hay que poner el código para que lo valide. Entiendo que es un archivo diferente al «ContactControler.php».
Un saludo y gracias
Hola Mikel,
Dependiendo el template y el módulo de newsletter que tengas, si el módulo que trae PrestaShop por defecto estaría en el tpl de /modules/ps_emailsubscription/
Un saludo
Hola David, he incluido el código que aportas y cuando intento enviar un email de prueba me salta error del captcha.