Форма обратной связи с ссылкой на номер ноды. Как лучше?

Главные вкладки

Аватар пользователя shread777 shread777 4 июня 2011 в 18:39

Здравствуйте!
Подскажите пожалуйста как лучше сделать. Стоит задача для каждой ноды определенного типа (товар) сделать форму обратной связи (свяжитесь с нами если есть вопросы по товару). Я вижу решение в создании формы с помощью webforms и публикации её в блоке на страницах типа tovar, но как "загнать" ай ди ноды(а лучше и имя товара "титл") в форму связи? Создать отдельное скрытое поле и с помощью jquery передавать туда инфу?
Или есть более "элегантное решение"?

Комментарии

Аватар пользователя Dmitriy.ua Dmitriy.ua 4 июня 2011 в 19:26

Почему то терпеть не могу вебформ) буду сегодня завтра такое делать модулем - выложу.
Теоретически в hook_nodeapi сформировать форму и ... + обработчик.

Аватар пользователя shread777 shread777 6 июня 2011 в 11:18

Dmitriy.ua wrote:
Почему то терпеть не могу вебформ) буду сегодня завтра такое делать модулем - выложу.
Теоретически в hook_nodeapi сформировать форму и ... + обработчик.

Было бы любопытно посмотреть) заранее спасибо)

Аватар пользователя Dmitriy.ua Dmitriy.ua 6 июня 2011 в 16:28

shread777 wrote:
Dmitriy.ua wrote:
Почему то терпеть не могу вебформ) буду сегодня завтра такое делать модулем - выложу.
Теоретически в hook_nodeapi сформировать форму и ... + обработчик.

Было бы любопытно посмотреть) заранее спасибо)

На скорую руку набрасал (можно конечно по другому):

В нодеапи:

$form .= '<form onsubmit="return aa()" method="get">';
$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
);
}      

В шаблоне нужного материала:

        <?php if($node->content['userform']['#value']) { ?>  
           <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:

<script type="text/javascript">
        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_name variable_get('site_name''Название организации');
    
$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);

?>
Аватар пользователя Dmitriy.ua Dmitriy.ua 7 июня 2011 в 15:38

shread777 wrote:
Подскажите пожалуйста, а что значит в ноде апи? в какой файл это идет? в node.module?

Я имел ввиду hook_nodeapi в своем модуле.

Аватар пользователя iNFerNo iNFerNo 4 июня 2011 в 19:39

я видел у кого то из местный кнопку которая вела на обратную связь с выбраным уже разделом (кому писать и по поводу чего) с заполненным тайтлом . оставалось только текст сообщения дописать и нажать отправить...

Аватар пользователя shread777 shread777 6 июня 2011 в 10:33

"msidiagnos01" wrote:
Тебе необходимо, чтобы в приходящем к тебе письме была ссылка, с какой страницы отправлена заявка?

Например так. Но лучше чтобы приходило письмо на мэйл с инфой :
Имя: лалалал
Телефон: 1313213321
Товар: номер такой то(вот это поле юзер не должен сам заполнять, это ай ди товара)
Комментарий(вопрос): лалалала

Аватар пользователя shread777 shread777 8 июня 2011 в 9:34

Я делал как писал k-a) используя webforms... Все получилось)

Я ещё не достаточно хорошо знаю апи друпал, поэтому воздержался от способа создания своего модуля. Но обязательно попробую этот вариант позже.

Аватар пользователя TurboAndroid TurboAndroid 26 марта 2012 в 5:43

drupal7, webform в виде блока выводится на странице статьи с которой хочу получить письмо обратной связи
присваивает %nid такой как у страницы вэбформы а мне надо получить (и в письме отправить ) адрес страницы на которой был показан блок формы Sad