Здравствуйте!
Подскажите пожалуйста как лучше сделать. Стоит задача для каждой ноды определенного типа (товар) сделать форму обратной связи (свяжитесь с нами если есть вопросы по товару). Я вижу решение в создании формы с помощью webforms и публикации её в блоке на страницах типа tovar, но как "загнать" ай ди ноды(а лучше и имя товара "титл") в форму связи? Создать отдельное скрытое поле и с помощью jquery передавать туда инфу?
Или есть более "элегантное решение"?
Комментарии
Почему то терпеть не могу вебформ) буду сегодня завтра такое делать модулем - выложу.
Теоретически в hook_nodeapi сформировать форму и ... + обработчик.
Было бы любопытно посмотреть) заранее спасибо)
На скорую руку набрасал (можно конечно по другому):
В нодеапи:
$form .= '<input id="form_title" name="title" type="hidden" value="'.$node->title.'">';
$form .= '<input id="form_path" name="path" type="hidden" value="'.$node->path.'">';
$form .= '<input id="form_contact" name="contact" type="text" value="">';
$form .= '<input id="form_submit" name="submit" type="submit" value="Відправити">';
$form .= '</form>';
$node->content['userform'] = array(
'#value' => $form,
'#weight' => 10
);
}
В шаблоне нужного материала:
<div id="form-order-wrap">
<div id="form_order_title">Отримати інформацію</div>
<div id="form_order_content">
<?php print $node->content['userform']['#value'];?>
</div>
<div id="form_order_ok">Дякуємо! Найближчим часом ми зв'яжемося з вами.</div>
</div>
<?php } ?>
Функция aa() в page.tpl.php:
function aa(){
var title = $('#form_title').val();
var path = $('#form_path').val();
var contact = $('#form_contact').val();
if (!contact){
$('#form_contact').attr("class", "contact-error");
return false;
}
if (title && path && contact){
$.ajax({
type: "POST",
url: '/mail.php',
data: "title="+title+"&path="+path+"&contact="+contact,
success: function(data) {
$('#form_contact').val('');
$("#form_order_ok").show();
$("#form_order_content").hide();
}
});
}
return false;
}
</script>
Ну и mail.php
<?php
require_once './includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL); $title = $_POST['title'];
$path = $_POST['path'];
$contact = $_POST['contact'];
$data = "Название : ".$title;
$data .= "<br />Ссылка : http://sitename.ru/".$path;
$data .= "<br />Контакт : ".$contact;
$from_mail = variable_get('site_mail', 'office@mail.ru');
$from_name = addslashes(mime_header_encode($from_name));
$subject = variable_get('title_email', 'Отправленно новое сообщение'); $headers = 'From: '.$from_name.'<'.$from_mail.'>' . "\r\n";
$headers .= "Content-Type: text/html; charset=UTF-8\n"; $email = variable_get('admin_email',variable_get('site_mail', 'office@mail.ru'));
mail($email, $subject, $data, $headers); ?>
Подскажите пожалуйста, а что значит в ноде апи? в какой файл это идет? в node.module?
Я имел ввиду hook_nodeapi в своем модуле.
я видел у кого то из местный кнопку которая вела на обратную связь с выбраным уже разделом (кому писать и по поводу чего) с заполненным тайтлом . оставалось только текст сообщения дописать и нажать отправить...
Тебе необходимо, чтобы в приходящем к тебе письме была ссылка, с какой страницы отправлена заявка?
http://www.drupal.ru/node/52977
Например так. Но лучше чтобы приходило письмо на мэйл с инфой :
Имя: лалалал
Телефон: 1313213321
Товар: номер такой то(вот это поле юзер не должен сам заполнять, это ай ди товара)
Комментарий(вопрос): лалалала
чтонить вышло?
Я делал как писал k-a) используя webforms... Все получилось)
Я ещё не достаточно хорошо знаю апи друпал, поэтому воздержался от способа создания своего модуля. Но обязательно попробую этот вариант позже.
Черепаха
попил пивка...
drupal7, webform в виде блока выводится на странице статьи с которой хочу получить письмо обратной связи
присваивает %nid такой как у страницы вэбформы а мне надо получить (и в письме отправить ) адрес страницы на которой был показан блок формы