В стандартной установке Joomla 3 присутствует плагин защиты от спам-ботов - ReCaptcha. Не секрет, что эта капча очень отпугивает посетителей, ужасно снижая конверсию. И это понятно - русскоязычному пользователю очень трудно разобрать надписи. Есть еще один момент - этот плагин обращается к api google и если что-то на сайте google пойдет не так (хакеры, землетрясение, наводнение, годзилла или просто высокая загруженность канала), то ваша капча, а соответственно и форма, на которой капча установлена тоже перестанут работать. Что же делать, если хочется с одной стороны защитить свой сайт от ботов, а с другой - не отпугнуть клиентов и не обращаться к сторонним сайтам? Вы удивитесь, но решение есть. По совершенно адекватной цене.

Рассказываю, как это будет выглядеть со стороны клиента. Предположим наша супер-капча установлена на форме регистрации пользователя.

Защита от спам-ботов в Joomla 3

Как видно из скриншота, посетителю, чтобы доказать, что он не робот, не нужно ничего вводить - нужно просто поставить галочку. А почему робот не может поставить галочку? Совершенно резонный вопрос. Потому что у него нет ручек! То есть, робот не запускает браузер, не кликает на поля ввода и на галочки. Все роботы действуют одинаково - они получают данные с сайта, расшифровывают капчу, и отправляют данные формы обратно серверу. В нашем случае, система защиты действует следующим образом. При клике на чекбокс запускается javascript, который формирует дополнительное скрытое поле со случайным содержимым (по типу джумловского токена). Это поле впоследствии будет сравнено с аналогичным содержимым, предварительно сохраненным на сервере. Сам скрипт тоже зашифрован, поэтому его логику роботу отследить не получится. Теоретически это возможно, но долго и дорого. Я бы не взялся за такую работу.

Итак, переходим на страницу покупки плагина защиты от спам-ботов. Оформляем заказ и оплачиваем удобным способом. После оплаты, на Ваш электронный ящик придет уведомление со ссылкой на скачивание плагина.
Устанавливаем плагин через менеджер расширений.

Настройка плагина. В менеджере плагинов выбираем тип "Captcha" и видим в списке два плагина (как минимум):

Менеджер плагинов с плагинами Captcha

Включаем Captcha - SttCaptcha и выключаем CAPTCHA - reCAPTCHA. Хотя можете не отключать, если будете использовать и его.
Заходим Меню - Система - Общие настройки. В пункте CAPTCHA (по умолчанию) выбираем Captcha - SttCaptcha.

Captcha по-умолчанию в Joomla 3

Капча установлена. Теперь все формы которые могут использовать капчу, будут выводить поле для галочки, а не зашифрованные ребусы. Но тут есть еще одна проблема - с языковыми фразами. Например, в форме регистрации пользователя, перед галочкой будет стоять слово "Captcha". И пользователь вряд ли поймет, что нужно поставить галочку. Тем более, увидев пояснение к этому полю: "Введите текст, который вы видите на картинке". Так уж получилось, что к любым капчам у джумлы предусмотрена такая дежурная фраза. Что можно сделать в этом случае? Самый простой вариант - откорректировать языковой файл language\ru-RU\ru-RU.com_users.ini. Там в самом начале (8 и 9 строки) нужно заменить фразы:

COM_USERS_CAPTCHA_LABEL="Поставьте галочку, если вы не робот"
COM_USERS_CAPTCHA_DESC="Защита от спам-ботов. Просто поставьте галочку."

Чем плох такой вариант? Тем, что после обновления джумлы или языкового пакета, Вам снова придется править этот файлик. Если вы не хотите ничего править после каждого обновления, то можно пойти другим путем. Он немного более извилист, но тоже не сложен.
1.Берем файл components/com_users/views/registration/tmpl/default.php и копируем его в папку templates/ВашШаблон/html/com_users/registration/. Если там уже есть такой файл, то заменять его не нужно.
2.Ищем в файле templates/ВашШаблон/html/com_users/registration/default.php такие строки:

 <div class="control-label">
 <?php echo $field->label; ?>

и меняем их на следующий код:

<div class="control-label">
<?php if($field->type=='Captcha') { 
echo '<label id="jform_captcha-lbl" for="jform_captcha" class="hasTooltip required" title="Защита от спам-ботов.">Кликните, если Вы не робот<span class="star">&#160;*</span></label>';
} else echo $field->label; ?>

То есть в макете вывода мы для капчи поменяли текст. А поскольку при обновлении джумлы макеты, находящиеся в папке templates не меняются, то Вам не нужно бояться, что изменения пропадут после обновления.

Кстати, если вам нужно, чтобы защита от спам-ботов стояла в форме обратной связи компонента Контакты, зайдите в админке в этот компонент, кликните настройки и убедитесь, что в поле капча стоит значение "по-умолчанию".