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