reCaptcha на будь-яку форму
Потрібно змінити шаблон reCaptcha. Скопіюйте з шаблонів директорію studioforty9 з усім вмістом в свою тему. Тепер змінимо там перші пару рядків:
Цим я додав можливість вказувати назву action-а (перший параметр в $ routes-> add) для якого потрібно показувати і затверджувати капчу.
Давайте тепер використовуємо це на уявній формі зворотного дзвінка, яка повинна виводиться на кожній сторінці в шапці
І додамо підтримку в адмінці:
В результаті може вийти щось не уявне :)
Немає reCaptch-е для зареєстрованих користувачів
Почистимо кеш і отримаємо наступний результат:
Тепер використовую 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 і міняємо виклик