тел.: 8(961)008-77-55

результат интеграции reCaptcha в JcommentsЛюблю Joomla 3, использую компонент JComments от JoomlaTune, который позволяет комментировать статьи на сайте хорошие настройки, вполне устраивает, но есть одна проблема - спам. Комментарии сыплются градом от ботов, ;kcaptcha совершенно не спасает, через несколько дней приходится чистить базу от спам-сообщений, выискивая среди них полезные.

Не совсем понятно, почему разработчики не добавят reCAPTCHA в компонент JComments, а по-прежнему используют kcaptcha.

Существует все же возможность добавить reCAPTCHA в компонент JComments, стоит быть внимательным, при обновлении компонента JComments интеграцию reCAPTCHA придется делать снова.

Предварительно необходимо настроить reCAPTCHA в Joomla.

Нужно в файле

components\com_jcomments\tpl\ default\tpl_form.php

заменить код

tpl.form.php код

с

if ($this->getVar('comments-form-captcha', 0) == 1) {
$html = $this->getVar('comments-form-captcha-html');
if ($html != '') {
echo $html;
} else {
$link = JCommentsFactory::getLink('captcha');
?>
<p>
<span>
<img class="captcha" onclick="jcomments.clear('captcha');" id="comments-form-captcha-image" src="/<?php echo $link; ?>" width="121" height="60" alt="<?php echo JText::_('FORM_CAPTCHA'); ?>" /><br />
<span class="captcha" onclick="jcomments.clear('captcha');"><?php echo JText::_('FORM_CAPTCHA_REFRESH'); ?></span><br />
<input class="captcha" id="comments-form-captcha" type="text" name="captcha_refid" value="" size="5" tabindex="6" /><br />
</span>
</p>
<?php
}
}
?>

на

if ($this->getVar('comments-form-captcha', 0) == 1) {

$captchaEngine = 'recaptcha'; //or 'kcaptcha'

if ($captchaEngine == 'recaptcha') {
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$dispatcher->trigger('onInit','dynamic_recaptcha_1');
$recaptcha = $dispatcher->trigger('onDisplay', array(null, 'dynamic_recaptcha_1', 'class=""'));
?>
<div id="comments-form-captcha-holder">
<?php echo (isset($recaptcha[0])) ? $recaptcha[0] : ''; ?>
</div>
<?php
} else if ($captchaEngine == 'kcaptcha') {
$html = $this->getVar('comments-form-captcha-html');
if ($html != '') {
echo $html;
} else {
$link = JCommentsFactory::getLink('captcha');
?>
<p>
<span>
<img class="captcha" onclick="jcomments.clear('captcha');" id="comments-form-captcha-image" src="/<?php echo $link; ?>" width="121" height="60" alt="<?php echo JText::_('FORM_CAPTCHA'); ?>" /><br />
<span class="captcha" onclick="jcomments.clear('captcha');"><?php echo JText::_('FORM_CAPTCHA_REFRESH'); ?></span><br />
<input class="captcha" id="comments-form-captcha" type="text" name="captcha_refid" value="" size="5" tabindex="6" /><br />
</span>
</p>
<?php
}
}
}
?>

jcomments.ajax.php кодв файле components\com_jcomments\ jcomments.ajax.php заменить

$captchaEngine = $config->get('captcha_engine', 'kcaptcha');

на

$captchaEngine = 'recaptcha'; //or 'kcaptcha'

if ($captchaEngine == 'recaptcha') {
$post = JRequest::get('post');
JPluginHelper::importPlugin('captcha');
$dispatcher = JDispatcher::getInstance();
$result = $dispatcher->trigger('onCheckAnswer', $post['recaptcha_response_field']);
$response->addScript('grecaptcha.reset();');

if (!in_array(true, $result, true)) {
self::showErrorMessage (JText::_('ERROR_RECAPTCHA_V2'), 'captcha');
return $response;
}
} else

 Источник

Комментарии  

0 # Сергей 07.11.2018 12:10
на Joomla 2.5 не публикуются сообщения, все сделал по инструкции.
Может подскажете в чем дело?
Ответить | Ответить с цитатой | Цитировать
-1 # йцу 08.11.2018 20:03
ищите в настройках компонента, это где-то там забыли включить
Ответить | Ответить с цитатой | Цитировать

Добавить комментарий