Como poner captcha en Prestashop en 3 pasos
5 (100%) 4 votos

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