Здравствуйте уважаемое сообщество. Есть вопрос не дающий покоя моему "устамшему" мозгу уже второй день. Есть форма обратной связи на php, html, js - прекрасно себя зарекомендовавшая на обычных php сайтах собственной "варганки". Сейчас встал вопрос о прикручивании этой формы к Drupal 7. Проблема в том, что вопрос как встал, так и лег... Короче Drupal по любому меня побеждает (он сильнее). Форма состоит из 4-х файлов. Собственно сама HTML-ка формы, скрипты визуализации и связи с обработчиком и сам PHP обработчик. Если кидать файлы в корень сайта - форма работает. Как только пытаюсь подключить все это дело через шаблоны(темизацию) - ступор. Ничего никуда не отправляется. Помогите грамотно прикрутить "контакту" на сайт, дайте дельного совета, направления, мыслю... Буду весьма и весьма... Прикладываю код ниже.
1. Форма
<fieldset>
<div class="wrapper">
<div class="success"> Заказ принят! <br> <strong>Мы свяжемся с Вами в ближайшее время.</strong> </div>
</div>
<div class="field">
<label class="name">
<input type="text" value="Имя:">
<span class="empty">* Обязательное поле.</span>
</label>
</div>
<div class="field">
<label class="email notRequired">
<input type="text" value="E-mail:">
<span class="error">* Неправильный e-mail.</span>
</label>
</div>
<div class="field">
<label class="phone">
<input type="text" value="Телефон:">
<span class="empty">* Обязательное поле.</span>
</label>
</div>
<div class="field">
<label class="message">
<input type="text" value="Адрес:">
<span class="empty">* Обязательное поле.</span>
</label>
</div>
<div class="field">
<label class="time notRequired">
<input type="text" value="Желаемое время:">
</label>
</div>
<div class="clear"></div>
<div class="buttons-wrapper">
<a class="btn" data-type="submit">Вызвать</a><span class="loader"></span>
</div>
</fieldset>
2. Скрипт
Drupal.behaviors.myBehavior = {
attach: function (context) {
$(document).ready(function() {
$(function () {
resizeBody();
function resizeBody() {
var h = $(window).height();
var headerH = $('.header').outerHeight();
var middleH = $('.middle').outerHeight();
var footerH = $('.footer').outerHeight();
var paddings = 50;
$('.main').css('min-height', h - headerH - middleH - footerH - paddings);
$('body').css('min-height', h);
}
$(window).resize(resizeBody);
if ($.fn.forms) {
$('#contact-form.order').forms({
ownerEmail: 'site@yandex.ru',
senderEmail: 'site@yandex.ru',
mailHandlerURL: 'OrderMailHandler.php',
});
$('#contact-form.feedback').forms({
ownerEmail: 'site@yandex.ru',
senderEmail: 'site@yandex.ru',
mailHandlerURL: 'FeedbackMailHandler.php',
});
}
})
});
}
};
})(jQuery);
3. Обработчик
<?php
$owner_email = $_POST["owner_email"];
$headers = 'From:' . $_POST["email"];
$subject = 'Вызов замерщика';
$messageBody = "";
if($_POST['name']!='nope'){
$messageBody .= '<p>Имя: ' . $_POST["name"] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['email']!='nope'){
$messageBody .= '<p>Email: ' . $_POST['email'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}else{
$headers = 'From:' . $_POST["sender_email"];
}
if($_POST['phone']!='nope'){
$messageBody .= '<p>Телефон: ' . $_POST['phone'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['message']!='nope'){
$messageBody .= '<p>Адрес: ' . $_POST['message'] . '</p>' . "\n";
$messageBody .= '<br>' . "\n";
}
if($_POST['time']!='nope'){
$messageBody .= '<p>Желаемое время: ' . $_POST['time'] . '</p>' . "\n";
}
if($_POST["stripHTML"] == 'true'){
$messageBody = strip_tags($messageBody);
}
try{
if(!mail($owner_email, $subject, $messageBody, $headers)){
throw new Exception('mail failed');
}else{
echo 'mail sent';
}
}catch(Exception $e){
echo $e->getMessage() ."\n";
}
?>
Собственно как то так... Вижу проблему в том, что не могу правильно связать форму с обработчиком, а как это сделать уже "не ведаю"... Надеюсь на вашу поддержку сообщества. Спасибо.
Комментарии
создать блок или ноду и использовать PHP Filter (включается в модулях)
Я создал ноду, запихнул туда код формы, в хедере сквозняком подключены нужные скрипты, файл обработчик кинул в папку с темой (Для него нужно ноду создавать? Но это же обработчик, он не должен быть доступен...), но по нажатию кнопки отправить/вызвать посыл письма не проходит... Если можно, опишите пожалуйста конкретней что нужно вставлять и куда..?
Я бы вместо этого создал webform-у с такими же полями (выкинуть 1), подкрутил скрипт (приаттачить 2) к этой форме и настроить темплейт отсылки почты в вебформе (выкинуть 3).
А так замените:
<form id="contact-form" class="order">
на:
<form id="contact-form" class="order" action="/script3.php">
script3.php - это ваш скрипт 3.
Спасибо Nikita за вразумительное направление, буду пробовать... По итогу отпишусь...
Вариант 1. - модуль Contact - присутствует в ядре, добавляет страницу с формой обратной связии
Вариант 2. - Модуль Webforms - можно добавить любые формы, как страницы так и блоки с формами
Вариант 3. - Написать модуль - использовать Forms API и hook_mail()
по всем 3-м вариантам есть масса информации в сети.
-Если вы начали использовать CMS пользуйтесь его API, модулями или же пишите свой модуль. Это мой совет вам. А так же не редактируйте код в модулях(уже готовых) и в ядре - по этому пункту можете найти массу информации набрав в поисковой строке "Drupal хакать ядро".
Модуль Webform с темизацией и подключением конкретных скриптов решил мои проблемы. Спасибо всем отписавшимся за помощь!