Создание материала через сниппет
Для того, что-бы получить форму, которая работает на ajax нужно:
Html код формы
<div id="rightContent"> <div id="formParticipantsContainer"> <form method="post" id="formParticipants"> <div> <input type="hidden" name="name2" /> <div><label for="formParticipantsName">Имя</label></div> <div><input type="text" name="name" id="formParticipantsName" value="" /></div> </div> <div> <div><label for="formParticipantsLastname">Фамилия</label></div> <div><input type="text" name="lastname" id="formParticipantsLastname" value="" /></div> </div> <div> <div><label for="formParticipantsAge">Возраст</label></div> <div><input type="text" name="age" id="formParticipantsAge" value="" /></div> </div> <div> <div><label for="formParticipantsPhone">Телефон</label></div> <div><input type="text" name="phone" id="formParticipantsPhone" value="" /></div> </div> <div> <div><label for="formParticipantsEmail">E-mail</label></div> <div><input type="text" name="email" id="formParticipantsEmail" value="" /></div> </div> <div> <div><label for="formParticipantsTripMembersCount">Количество людей</label></div> <div><input type="text" name="trip_members_count" id="formParticipantsTripMembersCount" value="" /></div> </div> <div> <div><label for="formParticipantsTripPurpose">Цель</label></div> <div><select name="trip_purpose" id="formParticipantsTripPurpose"><option value="">Выбор цели:</option><option value="Обучение">Обучение</option><option value="Отдых">Отдых</option><option value="Аренда">Аренда</option></select></div> </div> <div> <div> <div><label>Даты поездки:</label></div> <div> <div> <div><label for="formParticipantsTripStartDate">Начала</label></div> <div><input type="text" name="data_start" id="formParticipantsTripStartDate" value="" /></div> </div> <div> <div><label for="formParticipantsTripEndDate">Окончания</label></div> <div><input type="text" name="data_end" value="" /></div> </div> </div> </div> </div> <div> <div><label for="formParticipantsComment">Комментарии, пожелания</label></div> <div><textarea cols="40" rows="4" name="comment" id="formParticipantsComment"></textarea></div> </div> <div style="display:none"> <input type="text" name="data_rodots" value="" /> </div> <div> <input type="button" onclick="send();" name="submit1" value="Отправить" /> </div> </form> <div id="result"></div> </div> </div>
У формы есть id formParticipants все элементы этого id будут переданы обработчику формы.
Для страницы с формой, в head пропишем немного JS, который и будет отвечать за отправку данных с формы:
<script type="text/javascript"> function send() { var data = $('#formParticipants').serialize(); $.ajax({ type: "POST", url: "portfolio/internet-magazinyi/gormet-texnologiya/", data: "data="+data, success: function(html) { $("#result").empty(); $("#result").append(html); } }); } </script>
url - это адрес документа, который отвечает за обработку данных, шаблон blank, не кешируемый, не показывать в меню, в теле контента прописать вызов сниппета
[!send_data!]
Обработчик формы сниппет send_data
<?php $title = "Заявка с сайта"; // $to - кому отправляем $to = 'admin@ifreework.org'; // $from - от кого $from= 'admin@ifreework.org'; if (!empty($_POST['name']) && !empty($_POST['phone']) && !empty($_POST['email']) && empty($_POST['data_rodots'])){ $mess = ' Имя:'.$_POST['name'].'<BR /> Фамилия:'.$_POST['lastname'].'<BR /> Возраст:'.$_POST['age'].'<BR /> Телефон:'.$_POST['phone'].'<BR /> E-mail:'.$_POST['email'].'<BR /> Количество людей:'.$_POST['trip_members_count'].'<BR /> Цель:'.$_POST['trip_purpose'].'<BR /> <label>Даты поездки:</label> Начало:'.$_POST['data_start'].'<BR /> Конец:'.$_POST['data_end'].'<BR /> Комментарии, пожелания:'.nl2br($_POST['comment']).'<BR /> '; require_once('assets/libs/docmanager/document.class.inc.php'); $doc = new Document(); // создаём новый док $doc->Set('parent','50');//куда пишем новый док $doc->Set('pagetitle','Заявка от '.$modx->db->escape($_POST['name']));// заголовок документа $doc->Set('alias','post'.time()); //алиас $doc->Set('content',$modx->db->escape($mess)); // наш контент $doc->Set('template','3'); // наш шаблон //$doc->Set('tvComment','post to comment');// если будут использоваться TV $doc->Save(); // функция, которая отправляет наше письмо. mail($to, $title,$mess, 'From:'.$from. "\r\n" . "MIME-Version:1.0\r\nContent-type: text/html; charset=utf-8"); mail($_POST['email'], $title,$mess, 'From:'.$from. "\r\n" . "MIME-Version:1.0\r\nContent-type: text/html; charset=utf-8"); //print_r($_post); exit; echo '<span style="color:red">Спасибо, Ваши данные переданы.</span><BR />'; } else { echo ' Пожалуста, заполните обязательные поля.'; } ?>
В самом низу html формы есть div с id result- он будет выводить результат обработки данных формы.
Так же нужно подключить класс
document.class.inc.php