Ces derniers mois ( voir depuis plus longtemps :/ ) les spams se sont attaqués en masse au formulaire d’inscription à la newsletter sur Prestashop.

J’ai déjà fait un module de captcha qui permets de régler le problème des spams sur le formulaire de contact et la création des clients depuis plusieurs années.
La demande de pouvoir rajouter un captcha sur la newsletter était déjà récurrente, mais il n’y avais pas de solution simple et rapide pour le mettre en place.

La bonne nouvelle est que depuis la sortie de la version 2.6.0 du module ps_emailsubscription grâce à une pull request de l’inévitable Jean-François Viguier ( https://github.com/PrestaShop/ps_emailsubscription/pull/49/files )

Il est possible via des nouveaux hooks d’implémenter facilement un captcha sur l’inscription newsletter.

Le hook à utiliser est displayNewsletterRegistration et il est implémenté dans le fichier modules/ps_emailsubscription/views/templates/hook/ps_emailsubscription.tpl

<div class="email_subscription block_newsletter" id="blockEmailSubscription_{$hookName}">
  <h4>{l s='Newsletter' d='Modules.Emailsubscription.Shop'}</h4>
  {if $msg}
    <p class="notification {if $nw_error}notification-error{else}notification-success{/if}">{$msg}</p>
  {/if}
  <form action="{$urls.current_url}#blockEmailSubscription_{$hookName}" method="post">
    <input type="text" name="email" value="{$value}" placeholder="{l s='Your e-mail' d='Modules.Emailsubscription.Shop'}" />
    {if $conditions}
      <p>{$conditions nofilter}</p>
    {/if}
    {hook h='displayNewsletterRegistration'}{* Le nouveau hook est ici *}
    <input type="hidden" value="{$hookName}" name="blockHookName" />
    <input type="submit" value="ok" name="submitNewsletter" />
    {hook h='displayGDPRConsent' id_module=$id_module}
    <input type="hidden" name="action" value="0" />
  </form>
</div>

J’ai donc mis à jour mon module eicaptcha pour utiliser ces nouveaux hooks et implémenter la vérification du captcha sur le formulaire d’inscription à la newsletter.
C’est donc le cas à partir de la version 2.1.0 qui est sortie aujourd’hui.

Affichage captcha sur la newsletter
Affichage captcha sur la newsletter

En revanche ce qui est un peu plus embêtant c’est que le hook n’est pas présent nativement dans le thème classic ( ni sans doute dans une majorité de thème )
Il sera donc nécessaire pour une majorité d’entre vous d’ajouter manuellement le code suivant dans le fichier themes/votretheme/modules/ps_emailsubscription/views/templates/hook/ps_emailsubscription.tpl
à l’endroit ou vous souhaitez afficher le captcha et à l’intérieur du form

{hook h='displayNewsletterRegistration'}

Afin d’éviter trop de retours et de permettre aux utilisateurs du module d’avoir des informations si la vérification ne fonctionne pas j’ai également optimisé le mode debug du module afin d’afficher ces informations.

Debug captcha newsletter
Debug captcha newsletter

Vous pouvez dès à présent télécharger la nouvelle version 2.1.0 du module depuis la page des releases  de github https://github.com/nenes25/eicaptcha/releases

En cas de problèmes n’hésitez pas à ouvrir des issues sur github également.
A compter d’aujourd’hui le spam devrait donc drastiquement  réduire également sur vos formulaires d’inscription à la newsletter 🙂