Подключение Google ReCapcha в PS 1.7 без модуля

Тема в разделе "PrestaShop", создана пользователем sche, 16 фев 2018.

Информация :
Приветствую гость, обрати внимание! Темы которые закреплены в разделах, в скором времени будут откреплены. Правила раздела PrestaShop

(Не актуальные темы) Каталоги:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
(Не актуальные темы) Поиск / Запросы:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
Полезная информация:Поддержка и помощь c PrestaShopУбираем ПрестаТраст, стучалки и прочую рекламуСовместные покупки модулей и шаблоновПеревод Prestashop и модулей
Модераторы: trace
  1. sche

    sche

    Регистр.:
    16 ноя 2017
    Сообщения:
    162
    Симпатии:
    66
    Всем добрый!
    Настраиваю Гугл Рекапчу для формы обратной связи (спам полился) по инструкции:
    https://www.nulled.cc/threads/292902/page-4#post-2783170
    Подскажите, пожалуйста, как вставить нужный код в ContactController.php, если на Престе 1.7 он (.php-файл, без учёта комментариев создателей) выглядит так:


    class ContactControllerCore extends FrontController
    {
    public $php_self = 'contact';
    public $ssl = true;

    public function initContent()
    {
    parent::initContent();

    $this->setTemplate('contact');
    }
    }
     
  2. Zveruga76

    Zveruga76

    Регистр.:
    20 июл 2013
    Сообщения:
    289
    Симпатии:
    432
    В 1.7 отправка сообщений реализована через модуль contactform, поэтому та инструкция не совсем подходит.
    Дорабатывайте в модуле, тем же способом, функцию sendMessage().
     
    sche нравится это.
  3. sche

    sche

    Регистр.:
    16 ноя 2017
    Сообщения:
    162
    Симпатии:
    66
    Простите, я в программировании ничего не понимаю (в институте был 1 семестр ФОРТРАНА).
    Нашёл функцию sendMessage() в contactform.php, выглядит кусок кода так:

    public function getWidgetVariables($hookName = null, array $configuration = [])
    {
    $notifications = false;
    if (Tools::isSubmit('submitMessage')) {
    $this->sendMessage();

    if (!empty($this->context->controller->errors)) {
    $notifications['messages'] = $this->context->controller->errors;
    $notifications['nw_error'] = true;
    } elseif (!empty($this->context->controller->success)) {
    $notifications['messages'] = $this->context->controller->success;
    $notifications['nw_error'] = false;
    }
    }

    if (($id_customer_thread = (int)Tools::getValue('id_customer_thread')) && $token = Tools::getValue('token')) {
    $cm = new CustomerThread($id_customer_thread);
    if ($cm->token == $token) {
    $this->customer_thread = $this->context->controller->objectPresenter->present($cm);
    $order = new Order((int)$this->customer_thread['id_order']);
    if (Validate::isLoadedObject($order)) {
    $customer_thread['reference'] = $order->getUniqReference();
    }
    }
    }

    Вставляют часть из инструкции в разные места (с заменой на мой секретный ключ, разумеется), ничего не меняется - галочка на сайте есть, но сообщения отправляются и без неё.
     
  4. Zveruga76

    Zveruga76

    Регистр.:
    20 июл 2013
    Сообщения:
    289
    Симпатии:
    432
    Без обид, но тогда по-быстрому подсказать не смогу. В этом случае нужно точно такую же инструкцию писать, по которой вы пробовали делать, чтобы с минимум знаний можно было все в коде поменять. А на это времени нет, может на выходных.
     
    _sashok и sche нравится это.
  5. sche

    sche

    Регистр.:
    16 ноя 2017
    Сообщения:
    162
    Симпатии:
    66
    Хорошо, спасибо. Буду пока сам пробовать разобраться и надеяться, что у вас всё-таки будет свободное время на выходных :)
     
    _sashok нравится это.
  6. nebikoff

    nebikoff

    Регистр.:
    5 авг 2013
    Сообщения:
    385
    Симпатии:
    156
    То же посыпался спам на 2-х сайтах на 1.7, вопрос, почему нужна капча без модуля и есть ли такой модуль?
     
  7. sche

    sche

    Регистр.:
    16 ноя 2017
    Сообщения:
    162
    Симпатии:
    66
    Модуль есть, называется Re Capcha https://addons.prestashop.com/ru/website-security-access/18478-re-captcha.html
    Но, как видите, стоит денежку, при том, что можно сделать за бесплатно вручную то, что он делает автоматически. Как включить капчу вручную на PS 1.6 - смотрите мой первый пост, там ссылка на инструкцию. Как сделать это самому в 1.7 - пока не выяснил, ради этого топик и создал.
    Если что, сделал также запрос модуля для 1.7 в соответствующем топике, но пока никто не поделился.
     
    _sashok нравится это.
  8. nebikoff

    nebikoff

    Регистр.:
    5 авг 2013
    Сообщения:
    385
    Симпатии:
    156
    Последнее редактирование: 19 фев 2018
  9. Zveruga76

    Zveruga76

    Регистр.:
    20 июл 2013
    Сообщения:
    289
    Симпатии:
    432
    На сайте разработчика написано, что вставлять в нужную форму над кнопкой с сабмитом. Значит в \themes\classic\modules\contactform\views\templates\widget\contactform.tpl
     
    _sashok нравится это.
  10. sche

    sche

    Регистр.:
    16 ноя 2017
    Сообщения:
    162
    Симпатии:
    66
    Действительно, первая не ставится. Вторая ставится и настраивается, но у меня лично такая проблема: курсор при наведении на слайдер превращается в стрелочку, которая показывает влево и вправо, и сдвинуть слайдер нельзя. Также такая капча не работает с андроид-смартфонов, в отличие от гугловской, что тоже плохо. Поэтому всё ещё надеюсь на то, что какая-нибудь добрая душа со свободным временем сделает туториал по ручной установке на 1.7. Это надо не только мне, а всем таким же аматорам, кто начнёт делать сайт на этой же версии Престы в будущем.
     
    _sashok нравится это.