Хай! Так как груз написания первого урока в категории 1С-Битрикс лег на меня) то придется отдуваться за всех) и для начала сделать урок более приближенный по функционалу к обыденным вещам, к примеру таким как форма обратной связи на Ajax, но с обработкой методами битрикса. В дальнейшем мы подробно рассмотрим, что такое битрикс и с чем его едят) запустив 5-10 обучающих уроков для новичков, дабы каждый мог погрузится в логику этого необычного и массивного фреймворка.
Приступим!
JQuery
<script> $(document).ready( function(){ $('#form_zakaz_uslug input#name').click(function(){ $('.form_zakaz_uslug .hidden_field').slideDown('fast')}) $("#form_zakaz_uslug").submit(function(){ var no_errors = true; //проверяем заполненность всех нужных полей формы $('input,textarea', $(this)).each(function() { if ($(this).val() == '') { if ($(this).attr('name') in {'name':1, 'email':1, 'text':1}) { errorInput($(this)); no_errors = false; } else { $(this).val(''); } } else successInput($(this)); }); //небольшая валидация e-mail var filter_email = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; var email_input = $("#form_zakaz_uslug input[name=email]"); if (!filter_email.test(email_input.val())) { no_errors = false; errorInput(email_input); $('.warning', $('#form_zakaz_uslug')).html('Введите корректный e-mail'); } else { successInput(email_input); $('.warning', $('#form_zakaz_uslug')).html('Все поля обязательны для заполнения'); } //если нет ошибок отправляем форму в обработчик if (no_errors) { //AJAX обработка jQuery.ajax({ url: '/sendmail_zakaz_uslug.php', type: 'POST', dataType: 'html', data: $('#form_zakaz_uslug').serialize(), success: function(response) { //если отправка успешна выводить сообщение об этом if(response=='ok') { $('.order_form').addClass('hide'); $('.success_message').removeClass('hide'); setTimeout(function(){ $('.order_form').removeClass('hide'); $('.success_message').addClass('hide'); }, 5000); } else { $('.order_form').addClass('hide'); $('.error_message').removeClass('hide'); setTimeout(function(){ $('.order_form').removeClass('hide'); $('.error_message').addClass('hide'); }, 5000); } }, //выводим ответ при ошибке со стороны сервера error: function(response) { $('.order_form').addClass('hide'); $('.error_message').removeClass('hide'); setTimeout(function(){ $('.order_form').removeClass('hide'); $('.error_message').addClass('hide'); }, 5000); } }); } return false; }); }); </script>
Основные моменты прокомментированы в коде, там все очень просто и не нуждается в дополнительном описании.
HTML
<form class="form_zakaz_uslug" id="form_zakaz_uslug" onsubmit="return false;"> <div id="statustext"></div> <div id="error_name" class="warning">Все поля обязательны для заполнения</div> <ul class="form" style="width: 308px; margin-top: 10px;"> <li> <label for="name">ФИО <span style="color: red;">*</span>:</label> <input type="text" name="name" id="name" placeholder="Имя" /> </li> <li> <label for="phone">Телефон:</label> <input type="text" name="phone" id="phone" placeholder="Телефон" /> </li> <li> <label for="email">E-mail <span style="color: red;">*</span>:</label> <input type="text" name="email" id="email" placeholder="E-mail" /> </li> <li> <label for="text">Комментарий:</label> <textarea name="text" id="text" placeholder="Комментарий"></textarea> </li> <li style="text-align: right;"> <input type="submit" class="submit" value="Заказать"> </li> </ul> </form>
Самая обычная форма, как и миллион других, которые мы с вами создавали :)
PHP
А вот тут уже начнется кое-что интересное.
Данный код мы поместим в файл AJAX-обработчика. Что у нас тут интересного?
<?require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");?> <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?>
Благодаря подключению файла prolog_before.php в битриксе исключается "шаблонная" часть и становятся доступны только библиотеки ядра, компоненты, модули и т.д. На данной странице вы можете делать что угодно и подгружать её в нужный div блок.
Далее мы просто запишем все данные с POST формы в нужный нам массив и передадим его на обработку в метод Send битрикса.
Весь код:
<?require_once($_SERVER['DOCUMENT_ROOT'] . "/bitrix/modules/main/include/prolog_before.php");?> <?if(!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true)die();?> <? if($_POST['name'] && $_POST['phone'] && $_POST['email'] && $_POST['text']){ $PROP = array(); $PROP['NAME'] = $_POST['name']; $PROP['PHONE'] = $_POST['phone']; $PROP['EMAIL'] = $_POST['email']; $PROP['TEXT'] = $_POST['text']; $arFields = $PROP; CEvent::Send("ZAKAZ_FOR_SERVICES", 's1', $arFields, 'N'); } echo 'ok'; ?>
И еще пару слов о самом Битриксе :)
CEvent::Send - метод, который создает почтовое событие которое будет в дальнейшем отправлено в качестве E-Mail сообщения. Возвращает идентификатор созданного события. Нестатический метод.
Синтаксис:
int CEvent::Send( string event, mixed lid, array fields, string duplicate="Y", int message_id="", array files )
Параметры:
event - Идентификатор типа почтового события.
lid - Идентификатор сайта, либо массив идентификаторов сайта.
fields - Массив полей типа почтового события идентификатор которого задается в параметре event_type. Массив имеет следующий формат: array("поле"=>"значение" [, ...]).
duplicate - Отправить ли копию письма на адрес указанный в настройках главного модуля в поле "E-Mail адрес или список адресов через запятую на который будут дублироваться все исходящие сообщения". Необязательный. По умолчанию "Y".
message_id - Идентификатор почтового шаблона по которому будет отправлено письмо. Если данный параметр не задан, либо равен "", то письма будут отправлены по всем шаблонам привязанным к типу почтового события, идентификатор которого задается в параметре event_type, а также привязанных к сайту(ам) идентификатор которого указан в параметре site. Необязательный. По умолчанию - "".
files - Массив id файлов, которые используются классом CFile.
Вот такое вот легкое первое знакомство с битриксом я решил для вас сделать :) Как видите ничего сложного и дальше будет только интереснее! Подписывайтесь на наш youtube канал, а также в социальных сетях, дабы быть в курсе всех самых новых событий! До встречи!