Як підключити google recaptcha на будь-яку форму в magento

reCaptcha на будь-яку форму

Потрібно змінити шаблон reCaptcha. Скопіюйте з шаблонів директорію studioforty9 з усім вмістом в свою тему. Тепер змінимо там перші пару рядків:

Цим я додав можливість вказувати назву action-а (перший параметр в $ routes-> add) для якого потрібно показувати і затверджувати капчу.

Давайте тепер використовуємо це на уявній формі зворотного дзвінка, яка повинна виводиться на кожній сторінці в шапці

І додамо підтримку в адмінці:

В результаті може вийти щось не уявне :)

Як підключити google recaptcha на будь-яку форму в magento

Немає reCaptch-е для зареєстрованих користувачів

Почистимо кеш і отримаємо наступний результат:

Як підключити google recaptcha на будь-яку форму в magento

Тепер використовую Magento rewrite перевизначити хелпер клас оригінального модуля Recaptcha своїм:

Ось і все, тепер якщо користувачів зареєстрований і увійшов до свого облікового запису, то капча йому не буде показуватися ніде :)

Підтримка декількох reCaptch на одній сторінці

Модуль StudioForty9_Recaptcha з коробки підтримувати тільки 1 reCaptcha на одній сторінці. Це результат того, що ім'я callback функції захардкоджено усередині шаблону і для всіх блоків має однакове значення. Також блок кожен раз додає новий скрипт на google, що може погано відобразиться на швидкості завантаження сторінки. Це і потрібно виправити.

Для початку потрібно створити вибільних блок, для цього в config.xml додамо

і відповідно створюємо клас FI_Recaptcha_Block_Explicit, який успадковує StudioForty9_Recaptcha_Block_Explicit

У цей клас я додав статичну властивість $ _isCaptchaRendered, для того щоб виводити скрипт для Google reCaptcha тільки один раз і відповідний метод renderCaptchaScript, який сховає ці деталі всередині себе.

Відкриваємо файл studioforty9 / recaptcha / explicit.phtml і міняємо виклик

висновок