Categorías
E-commerce

Como poner captcha en PrestaShop en 3 pasos

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:

como poner recaptcha en prestashop

Nos guardados la clave de data-sitekey:

Como poner reCaptcha en Prestashop

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.

¡Haz clic para puntuar esta entrada!
(Votos: 4 Promedio: 5)

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, 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

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 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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *