Блог Николая Семенцова

Партнер компании 1с-битрикс

Создание материала с помощью webform

Всем привет , не давно столкнулся с такой проблемой, необходимо было сделать модуль отзывов условия стояли такие

"добавление не авторизованными пользователями,редактирование и активация через админку, возможно добавление через админку, получить уведомления о отзывах, вывод блока с последними 3 отзывами, страница всех отзывов с постраничной навигацией"

Притом форма добавления отзыва находилась в блоке слева на главной странице :)

Решил что пусть у меня отзыв будет нодой, на сайте использовался модуль webform и я решил что сделаю все через него для начала я создал саму форму и вывел ее в блоке на сайте в шаблоне page--front.tpl.php

//условие необходимо для того что если форму уже отправили она не выводилась
                if(isset($_GET['response'])) {
                    echo 'Спасибо за оставленный отзыв.';
                }
                else {
// собственно здесь у нас вывод формы
                    $responsenode = node_load(13) ;
                    $responsenodeviews =  node_view($responsenode);
                    print drupal_render($responsenodeviews);
                }

Еще я создал свой шаблон для страницы с формой node--13.tpl.php от туда убрал просто все лишнее.

В настройках веб формы указано что при отправке формы будет редирект на страницу сообщения об успешной отправке формы webform-confirmation-13.tpl.php , на ней я сделал создание ноды исходя из тех данных которые поступили

//загружаем  функции для работы с результатами заполнения формы
include_once(drupal_get_path('module', 'webform') .'/includes/webform.submissions.inc');
// получаем параметры необходимые для работы функции это id node и  id результата
$nid = arg(1); 
$sid = $_GET['sid'];
// получаем результат
$submission = webform_get_submission($nid, $sid);
// создаем переменные с данными для создания ноды
$name = $submission->data[1]['value'][0];
$phone = $submission->data[2]['value'][0];
$text = $submission->data[3]['value'][0];
$date =  $submission->submitted;
 
// тут создает объект ноды 
$node = new stdClass();
$node->type = 'response';
$node->title = $name.' ('. $phone .')';
$node->language = LANGUAGE_NONE;
$node->body[$node->language][0]['value'] = $text;
$node->body[$node->language][0]['summary'] = '';
$node->body[$node->language][0]['format'] = 'filtered_html';
$node->field_phone[$node->language][0]['value'] = $phone;
$node->field_name[$node->language][0]['value'] = $name;
$node->uid = 1;
$node->status = 0;      // 1 - опубликовано, 0 - нет
$node->promote = 0;     // 1 - показывать на главной, 0 - нет
 
// создаем ноду
node_object_prepare($node);
node_save($node);
 
// редирект назад туда где была отправлена форма  а так же параметр get  о том что форма была отправлена
header('Location: ' . $_SERVER['HTTP_REFERER'].'?response=yes');

Вот собственно и все, надеюсь это поможет на только мне и ваш сайт будет полон позитивных отзывов.




Опубликовано: 23 ноября 2011




Помогла заметка? Жмите кнопки ниже


ВКонтакт Facebook Google Plus Одноклассники Twitter Яндекс Livejournal Liveinternet Mail.Ru





comments powered by Disqus