Если у вас возникли какие либо вопросы которые вы не смогли решить по нашим публикациям самостоятельно,
то ждем ваше обращение в нашей службе тех поддержки.
1) Как всегда первым делом копируем шаблон компонента, в нашем случае sale.order.ajax, я использовал шаблон .default, никто не мешает использовать visual.
2) Далее в файле template.php шаблона находит последние строки перед формой, там битрикс передает разные скрытые переменные, добавим туда саму капчу, вот кусок кода с капчей
Проверьте, на данном этапе капча уже должна отображаться в Вашей форме.
3) Далее создадим файл к которому мы будем обращаться, чтобы получить новый код капчи. Это необходимо, чтобы пользователь мог обновить капчу, если ему не понятны символы на картинке, а также при сабмите формы мы будем сразу обновлять капчу. Назовем файл captcha.php
и разместим в корне сайта, поместим в файл следующий код.
4) Теперь напишем js (с помощью jQuery), который будет обновлять капчу. Поместим в самом низу файла template.php.
Обновление капчи уже должно работать.
5) Добавим саму проверку captcha в init.php.
Капча в оформлении заказа в битриксе готова.
Назад в раздел
то ждем ваше обращение в нашей службе тех поддержки.
Добавляем капчу (captcha) в оформление заказа (sale.order.ajax)
Разработчики Битрикса добавлять капчу в оформление заказа не планируются, а зря. Ну да ладно, исправляем эту ситуацию сами.1) Как всегда первым делом копируем шаблон компонента, в нашем случае sale.order.ajax, я использовал шаблон .default, никто не мешает использовать visual.
2) Далее в файле template.php шаблона находит последние строки перед формой, там битрикс передает разные скрытые переменные, добавим туда саму капчу, вот кусок кода с капчей
<?if($_POST["is_ajax_post"] != "Y") { ?> </div> <input type="hidden" name="confirmorder" id="confirmorder" value="Y"> <input type="hidden" name="profile_change" id="profile_change" value="N"> <input type="hidden" name="is_ajax_post" id="is_ajax_post" value="Y"> <? // Получаем код капчи $code = $APPLICATION->CaptchaGetCode(); ?> <div class="captcha-holder"> <label for="object-20">Введите символы:</label> <?// Изображение капчи?> <img src="/bitrix/tools/captcha.php?captcha_sid=<?=$code;?>" alt="CAPTCHA" width="110" height="33" class="captcha_pic" /> <?// Обновление капчи?> <a href="#" rel="nofollow" class="update-captcha"> </a> <?// Скрытое поле капчи?> <input type="hidden" name="captcha_sid" value="<?=$code;?>" /> <?// Поле для ввода капчи пользователем?> <input type="text" id="object-20" class="form-text" name="captcha_word" value="" /> </div><!-- captcha-holder --> <div class="description"><span>*</span> Поля, необходимые для заполнения</div> <div class="btn-holder"> <input type="button" name="submitbutton" onClick="submitForm('Y');" value="<?=GetMessage("SOA_TEMPL_BUTTON")?>" class="form-submit"> </div><!-- btn-holder --> </fieldset> </form> <?if($arParams["DELIVERY_NO_AJAX"] == "N"):?> <script type="text/javascript" src="/bitrix/js/main/cphttprequest.js"></script> <script type="text/javascript" src="/bitrix/components/bitrix/sale.ajax.delivery.calculator/templates/.default/proceed.js"></script> <?endif;?> <? } |
3) Далее создадим файл к которому мы будем обращаться, чтобы получить новый код капчи. Это необходимо, чтобы пользователь мог обновить капчу, если ему не понятны символы на картинке, а также при сабмите формы мы будем сразу обновлять капчу. Назовем файл captcha.php
и разместим в корне сайта, поместим в файл следующий код.
<?if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') { require_once($_SERVER['DOCUMENT_ROOT']. "/bitrix/modules/main/include/prolog_before.php"); if($_POST['captcha'] == 'yes') { echo $code = $APPLICATION->CaptchaGetCode(); } else die(); } else die(); ?> |
<script> $(document).ready(function() { $('.update-captcha').on('click', function(){ $.ajax({ url: '/captcha.php', type: 'post', data: 'captcha=yes', success: function(data){ $('#ORDER_FORM .captcha_pic').attr('src', '/bitrix/tools/captcha.php?captcha_sid=' + data); $('#ORDER_FORM input[name="captcha_sid"]').val(data); } }); return false; }); $('.form-submit').on('click', function(){ $.ajax({ url: '/captcha.php', type: 'post', data: 'captcha=yes', success: function(data){ $('#ORDER_FORM .captcha_pic').attr('src', '/bitrix/tools/captcha.php?captcha_sid=' + data); $('#ORDER_FORM input[name="captcha_sid"]').val(data); } }); }); }); </script> |
5) Добавим саму проверку captcha в init.php.
AddEventHandler("sale", "OnSaleComponentOrderOneStepProcess", array("MyClass", "OnSaleComponentOrderOneStepProcessHandler")); class MyClass { function OnSaleComponentOrderOneStepProcessHandler(&$arResult, &$arUserResult) { global $APPLICATION; if($arUserResult["CONFIRM_ORDER"] == "Y" && !$APPLICATION->CaptchaCheckCode($_POST['captcha_word'], $_POST['captcha_sid'])) $arResult["ERROR"][] = 'Введите правильно "Код" с картинки'; } } |
Капча в оформлении заказа в битриксе готова.
Назад в раздел
Подписаться на новые материалы раздела: