Вход • Регистрация

Всего найдено: 4

  • 03 августа 2019 г. , редакция: 1564821081
  • Здравствуйте!
    Как добавить reCaptcha для всплывающей формы заказа в 1 клик?
    На данный момент у меня получилось ее вывести, но она живет своей жизнью :)
    DIAFAN версия 6.0.9.0

    Что я делал.

    В файле: /modules/cart/cart.model.php
    Запросил в функции form_param() капчу:
    Код
    $this->result["captcha"] = $this->diafan->_captcha->get('cart_one_click');


    Вывел ее файле /custom/my/modules/cart/views/cart.view.one_click.php
    Под полями:
    Код
    echo '<div class="control">' . $result['captcha'] . '</div>';


    Куда копать дальше?
  • 05 августа 2019 г. , редакция: 1565007017
  • Спасибо! Но этот вариант не работал.
    Забыл сказать, у меня данные формы заказа в 1 клик работают на ajax. То есть, на этапе проверки в empty_required_field нужно было проверять капчу, как я понял.
    Как я решил:

    /modules/cart/cart.model.php в функции form_param() добавил:
    Код
    $this->result["captcha"] = $this->diafan->_captcha->get("cart");

    /custom/my/modules/cart/views/cart.view.one_click.php добавил:
    Код
    echo '<div class="control">'.$result['captcha'].'</div>';

    /modules/cart/cart.action.php в функции order() добавил дополнительные параметры для капчи:
    Код
    if ($is_one_click) {
    $params[] = array(
    'name' => 'google_recaptcha',
    'type' => 'captcha',
    );
    }

    /includes/action.php в функции empty_required_field() добавил:
    Код
    if ($row["type"] == 'captcha' && $row["name"] == 'google_recaptcha') {
    $this->check_captcha();
    }

    Осталась небольшая проблемка. Для каждого товара в стр категории генерируется своя всплывающая форма. В каждой форме своя рекаптча. И все они имеют одинаковый id recaptcha_div_cart.
    Соответственно, нужно сделать уникальным каждый такой id.
    Самый очевидный способ - добавить в конце id товара.

    UPD
    В шаблоне /custom/my/modules/cart/views/cart.view.one_click.php перед выводом капчи прошелся регуляркой:
    Код
    $captcha = preg_replace('/ id="recaptcha(.*?)"/', ' id="recaptcha\1_' . $result['good_id'] . '"', $result['captcha']);
    echo '<div class="control">'.$captcha.'</div>';

  • 07 августа 2019 г. , редакция: 1565189418
  • Есть еще идея. Не знаю насколько она рабочая и сколько затронет правок в шаблоне и скриптах.
    Заменить тег формы и кнопку type="submit" на div. То есть это будет вроде как не форма, но по функциональности таковой будет являться.

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум