Всем привет , не давно столкнулся с такой проблемой, необходимо было сделать модуль отзывов условия стояли такие
"добавление не авторизованными пользователями,редактирование и активация через админку, возможно добавление через админку, получить уведомления о отзывах, вывод блока с последними 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
|
|
|