Добавляем капчу в комментарии

Добавляем капчу для гостей в комментарии на InstantCMS 2.5.1

 
Посетитель
small user social cms
Сообщений: 42
Здравствуйте! Решил сделать обзорную статья как добавить компонент recapcha в комментарии для гостей в Instant CMS2. Давайте пожалуй начнём.

1. Открываем файл по пути "/system/languages/ru/controllers/comments/comments.php". После шестой строки:
Код PHP:
  1. define('LANG_COMMENTS_OPT_IS_GUESTS_HINT', 'Незарегистрированные пользователи смогут добавлять комментарии');
вставляем ещё две строки:
Код PHP:
  1. define('LANG_COMMENTS_CAPCHA_FOR_GUESTS', 'Показывать капчу гостям');
  2. define('LANG_COMMENTS_CAPCHA_FOR_GUESTS_HINT', 'Отображать капчу при добавлении комментариея гостем чтобы избежать спама в комментариях');
Дальше открываем файл по пути "/system/languages/en/controllers/comments/comments.php". После шестой строки:
Код PHP:
  1. define('LANG_COMMENTS_OPT_IS_GUESTS_HINT', 'Not registered users will be able to add comments');
вставляем две строки:
Код PHP:
  1. define('LANG_COMMENTS_CAPCHA_FOR_GUESTS', 'Show CAPTCHA for guests');
  2. define('LANG_COMMENTS_CAPCHA_FOR_GUESTS_HINT', 'Show the captcha by adding a guest commentary to avoid comment spam');
Здесь мы указали текстовые метки для опции включения капчи для гостей в админке компонента.

2. Дальше открываем файл по пути: "/system/controllers/comments/backend/forms/form_options.php". После 16 строки(после блока
Код PHP:
  1. new fieldCheckbox('is_guests', array(
  2. 'title' => LANG_COMMENTS_OPT_IS_GUESTS,
  3. 'hint' => LANG_COMMENTS_OPT_IS_GUESTS_HINT,
  4. )),
) вставляем вот такой код:
Код PHP:
  1. new fieldCheckbox('capcha_for_guests', array(
  2. 'title' => LANG_COMMENTS_CAPCHA_FOR_GUESTS,
  3. 'hint' => LANG_COMMENTS_CAPCHA_FOR_GUESTS_HINT,
  4. )),
Этим мы добавляем новую опцию в админке комментариев.

3. Теперь идём в файл "/templates/имя_используемого_шаблона(исходный шаблон - default)/controllers/comments/list.tpl.php". После шестой строки:
Код PHP:
  1. <?php $is_karma_allowed = $user->is_logged && !cmsUser::isPermittedLimitHigher('comments', 'karma', $user->karma); ?>
вставляем строки:
Код PHP:
  1. <?php $captcha_for_guests = cmsEventsManager::hook('captcha_html'); ?>
  2. <?php $enable_capcha = !empty($this->controller->options['capcha_for_guests']); ?>
и в этом же файле после 98-ой строки:
Код PHP:
  1. <?php echo $user->is_logged ? html_editor('content') : html_textarea('content'); ?>
вставляем код:
Код PHP:
  1. <?php if (!$user->is_logged && $enable_capcha)
  2. {
  3. echo $captcha_for_guests;
  4. } ?>
Здесь мы прописываем что если выбрана опция "Показывать гостям капчу" то для всех гостей при добавлении показывать капчу.

4. Теперь открываем файл "/system/controllers/comments/actions/submit.php". В этом файле сразу после 136-ой строки (после блока кода:
Код PHP:
  1. $comment = array(
  2. 'user_id' => $user->id,
  3. 'parent_id' => $parent_id,
  4. 'target_controller' => $target_controller,
  5. 'target_subject' => $target_subject,
  6. 'target_id' => $target_id,
  7. 'content' => $content,
  8. 'content_html' => $content_html,
  9. 'author_url' => $user->ip
  10. );
Вставляем вот такой код:
Код PHP:
  1. if (!$user->is_logged && $enable_capcha)
  2. {
  3. $is_captcha_for_comments_valid = cmsEventsManager::hook('captcha_validate', $this->request);
  4. if (!$is_captcha_for_comments_valid)
  5. {
  6. $result_capcha_invalid = array(
  7. 'error' => 'capcha_invalid',
  8. 'message' => LANG_CAPTCHA_ERROR
  9. );
  10. $template->renderJSON($result_capcha_invalid);
  11. }
  12. }
Здесь мы смотрим включена ли капча и если включена, то проверяем правильно ли она разгадана, если да, то добавляем комментарий, если нет то выбрасываем сообщение об ошибке.

Теперь смотрим в админеке комментариев в опциях должен появиться параметр "Показывать капчу гостям" и если вы его включите то для всех кто не зарегистрировался при попытке добавить комментарий будет выводиться капча. Демо здесь, recapcha для гостей включена.

Архив с обновлёнными файлами для добавления рекапчи в комментарии. Работает на 2.5.0-2.5.1 с другими версиями не тестился, чтобы установить просто извлекаем всё из архива в корень сайта с заменой предварительно сделав бэкап.
Редактировалось: 3 раз (Последний: 22 апреля 2016 в 10:17)
Нужна рассылка на сайте? Решение здесь.
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 839
Это как я понял для 2 ветки?
Реклама
cms
Посетитель
small user social cms
Медаль
Сообщений: 444
Михаил, как реализовать подобное для объявлений? Может подскажете, очень нужно.
Посетитель
small user social cms
Сообщений: 42
Заралик:

Это как я понял для 2 ветки?

Да, для 2 ветки.

Pasechnik:
Михаил, как реализовать подобное для объявлений? Может подскажете, очень нужно.

Для 1-й ветки?
Нужна рассылка на сайте? Решение здесь.
Посетитель
small user social cms
Медаль
Сообщений: 444
Михаил:
Для 1-й ветки?
Видимо что-то упустил. smile Для 2-й реализовано по умолчанию?
Посетитель
small user social cms
Сообщений: 42
Pasechnik:
Видимо что-то упустил. Для 2-й реализовано по умолчанию?
Моё решение написано для компонента комментарии во второй ветке ICMS
Нужна рассылка на сайте? Решение здесь.
Посетитель
small user social cms
Медаль
Сообщений: 444
Михаил:
Моё решение написано для компонента комментарии во второй ветке ICMS
Для второй ветки нужно, при добавлении объявлений гостями.
Посетитель
small user social cms
МедальПочетный донор проекта
Сообщений: 839
Михаил:

Pasechnik:
Видимо что-то упустил. Для 2-й реализовано по умолчанию?
Моё решение написано для компонента комментарии во второй ветке ICMS
Работа отличная! Но вот будет ли что то для ё ветки? По поводу добавления капчи в объявления тоже отлично!
Посетитель
small user social cms
Сообщений: 42
Заралик:

Михаил:

Pasechnik:
Видимо что-то упустил. Для 2-й реализовано по умолчанию?
Моё решение написано для компонента комментарии во второй ветке ICMS
Работа отличная! Но вот будет ли что то для ё ветки? По поводу добавления капчи в объявления тоже отлично!

Смотря что необходимо. Может найду время сделаю.
Нужна рассылка на сайте? Решение здесь.
Посетитель
small user social cms
Медаль
Сообщений: 415
Все сделал, как описано. Не работает на 2.5.1. Капча для гостей выводится, но если ее вообще проигнорировать, т.е. ввести имя, набрать текст комментария и нажать "Отправить", комментарий добавляется, как будто бы капчи и нет вообще.
Редактировалось: 1 раз (Последний: 2 ноября 2016 в 23:43)
Посетитель
no avatar
Сообщений: 20
al955:
Все сделал, как описано. Не работает на 2.5.1. Капча для гостей выводится, но если ее вообще проигнорировать, т.е. ввести имя, набрать текст комментария и нажать "Отправить", комментарий добавляется, как будто бы капчи и нет вообще.
Аналогично
В начало страницы
Предыдущая темаСледующая тема Перейти на форум:
Быстрый ответ
Чтобы писать на форуме, зарегистрируйтесь или авторизуйтесь.