История данной разработки, берущая начало от одного из web-проектов Masterpro и вылившаяся в итоге в самостоятельное расширение - детально представлена в материалах, заголовки которых вы можете увидеть в левом сайдбаре этой странички; в настоящий момент любители и профи Joomla имеют возможность опробовать jTriad contact form на своем сайте, а также проголосовать за модуль на странице JED.
Рассмотрим здесь процесс подключения recaptcha 2.0 к нашей формочке: первая recaptcha у нас с вами работала и в старой версии модуля, а вот вторая (при выборе recaptcha 2.0 вместо recaptcha 1.0 в плагине Joomla) пока что работать не хочет... впрочем, решение тривиально и совсем несложно. Подключение recaptcha для расширения Joomla 3 возможно следующим образом:
<? JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$recaptcha = $dispatcher->trigger('onDisplay', array(null, 'dynamic_recaptcha_1', 'class=""'));
echo (isset($recaptcha[0])) ? $recaptcha[0] : ''; ?>
это означает, что в файле mod_contactform_masterpro.php у нас с вами остается неизменным:
<? JPluginHelper::importPlugin('captcha');
$dispatcher = JEventDispatcher::getInstance();
$dispatcher->trigger('onInit','dynamic_recaptcha_1'); ?>
, а вот файл default.php в директории tmpl вместо
<div id="dynamic_recaptcha_1"></div>
содержит теперь следующие строчки кода (подключим заодно и проверку на то, включен ли плагин recaptcha):
<? if(JPluginHelper::isEnabled('captcha', 'recaptcha')) {
$recaptcha = $dispatcher->trigger('onDisplay', array(null, 'dynamic_recaptcha_1', 'class=""'));
echo (isset($recaptcha[0])) ? $recaptcha[0] : ''; }
else echo '<p><img src="/modules/mod_contactform_masterpro/img/recaptcha.jpg" /></p>'; ?>
И все у нас с вами сразу начинает работать... хм, все, да вот не все. Модуль действительно теперь корректно отображает recaptcha 1.0 и recaptcha 2.0, в зависимости от выбранных опций плагина recaptcha, да вот только, если пользователь ошибается при заполнении формочки и получает, соответственно, ошибку при попытке отправки - вторая recaptcha не дает возможности отправить данные повторно.
Что же делать? Правильным решением была бы, вероятно, реализация связанных (зависимых) списков, заведомо исключающих для пользователей нашей формочки возможность ошибиться при выборе, например, вакансии, имеющей место быть в том или ином городе... пока что он получает только варнинг; может быть, вообще исключить возможность неправильного выбора? Да, разумеется. Но об этом - чуть позже, в следующей статье (клик по ссылке, готово!). А пока что - ограничимся тем, что просто повесим переинициализацию recaptcha... подробности, код и diff - на форуме, и спасибо за внимание, на сегодня это все. Хорошего вам кодинга!