Доброй ночи всем. Сегодня получил сообщение в лс с просьбой объяснить чем же отличается хак на добавление капчи для гостей в комментарии для версии 2.5.1 от хака для версии 2.6.х, так как в этой версии мною ранее описаный метод не работает. В связи с этим решил посмотреть что у меня на сайте творится. Оказывается что мой хак после обновы движка вообще слетел, так что азарат был не только в том чтобы понять чем отличается, но и в том чтобы вернуть на свой сайт хак.
Дальше открываем файл по пути "/system/languages/en/controllers/comments/comments.php" и в конце файла добавляем
2. Дальше открываем файл по пути: "/system/controllers/comments/backend/forms/form_options.php". После 24 строки(после блока
вставляем
Этим мы добавляем новую опцию в админке комментариев.
3. Теперь идём в файл "/templates/имя_используемого_шаблона(исходный шаблон — default)/controllers/comments/list.tpl.php". После блока:
вставляем
и в этом же файле после 94-ой строки вроде:
вставляем:
4. Теперь открываем файл "/system/controllers/comments/actions/submit.php". После строк:
вставляем:
после 138 строки:
вставляем:
Здесь мы смотрим включена ли капча и если включена, то проверяем правильно ли она разгадана, если да, то добавляем комментарий, если нет то выбрасываем сообщение об ошибке.
Демо
Отличие оказалось основное в четвёртом шаге, кто читал мой пост о прошлой версии сразу его увидит. Файлы обновлённые залью попозже.
Всем спасибо за внимание, если помог — плюсик в карму или к записи.
И так приступим!
1. Открываем файл по пути "/system/languages/ru/controllers/comments/comments.php". В конце файла добавляем две строки:
define('LANG_COMMENTS_CAPCHA_FOR_GUESTS_HINT', 'Отображать капчу при добавлении комментариея гостем чтобы избежать спама в комментариях');
define('LANG_COMMENTS_CAPCHA_FOR_GUESTS_HINT', 'Show the captcha by adding a guest commentary to avoid comment spam');
'title' => LANG_COMMENTS_OPT_IS_GUESTS, 'hint' => LANG_COMMENTS_OPT_IS_GUESTS_HINT, )),
'title' => LANG_COMMENTS_CAPCHA_FOR_GUESTS, 'hint' => LANG_COMMENTS_CAPCHA_FOR_GUESTS_HINT, )),
3. Теперь идём в файл "/templates/имя_используемого_шаблона(исходный шаблон — default)/controllers/comments/list.tpl.php". После блока:
<?php // Шаблон списка комментариев и формы добавления // $this->addJS('templates/default/js/jquery-scroll.js'); $this->addJS('templates/default/js/comments.js'); $is_karma_allowed = $user->is_logged && !cmsUser::isPermittedLimitHigher('comments', 'karma', $user->karma); ?>
<?php $captcha_for_guests = cmsEventsManager::hook('captcha_html'); ?>
<?php echo $user->is_logged ? html_editor('content') : html_textarea('content'); ?>
<?php if (!$user->is_logged && $enable_capcha) { echo $captcha_for_guests; } ?>
$csrf_token = $this->request->get('csrf_token', ''); $target_controller = $this->request->get('tc', ''); $target_subject = $this->request->get('ts', ''); $target_id = $this->request->get('ti', ''); $target_user_id = $this->request->get('tud', ''); $parent_id = $this->request->get('parent_id', 0); $comment_id = $this->request->get('id', 0); $content = $this->request->get('content', '');
if ($is_guest){ $comment['author_name'] = $author_name; $comment['author_email'] = $author_email; }
if ($is_guest && $enable_capcha) { $is_captcha_for_comments_valid = cmsEventsManager::hook('captcha_validate', $this->request); if (!$is_captcha_for_comments_valid) { 'error' => 'capcha_invalid', 'message' => LANG_CAPTCHA_ERROR ); return $this->cms_template->renderJSON($result_capcha_invalid); } }
Демо
Отличие оказалось основное в четвёртом шаге, кто читал мой пост о прошлой версии сразу его увидит. Файлы обновлённые залью попозже.
Всем спасибо за внимание, если помог — плюсик в карму или к записи.
Реклама #
Sergon 7 лет назад #