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