Создание формы заказа

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

Аватар пользователя mekhos mekhos 13 января 2009 в 14:19

Всем привет!

Почитав сообщения относящиеся к теме вопроса так и не нашел ответа, поэтому хочу обратиться к сообществу.
Задача - создать страницу, на которой выводятся поля из некоторой ноды плюс поля формы отвечающие за сбор информации по адресу доставки, контактным данным и подробностям заказа. Всю полученную информацию, включая инормацию из ноды (которая по сути хранит в себе информацию о продукте, его свойствах в виде таксономии и изготовителе в виде ссылки на аккаунт) необходимо сохранить в базе и отправить по e-mail.
Я себе концептуально представляю решение так:

  1. Создаю с помощью CCK тип контента "Заказ"
  2. При нажатии кнопку "Сделать заказ" на странице продукта пользователь отправляется на страницу с формой создания объекта типа "Заказ". При этом, каким-то образом мы передаем идентификатор ноды (продукта) со страницы с которой была нажата кнопка
  3. В форме заказа помимо самих полей заказа отображаем информацию из ноды продукта
  4. После создания заказа отсылаем уведомление

Но не могу понять как выполнить пункт 2, а именно передачу идентификатора и включение объекта ноды в переменные доступные для шаблона.

Комментарии

Аватар пользователя mekhos@drupal.org mekhos@drupal.org 25 марта 2009 в 12:17

Я решил это вопрос так:

  1. Создал ноду "Заказ"(order) с полем field_item типа node reference
  2. Добавляю заказ с помощью линка node/add/order?item=123
  3. Создаю свой модуль в котором с помощью хука form_alter устанавливаю для field_item дефолтовое значение
    <?php
    $form
    ['field_item'][0]['#default_value']['nid'] = $_GET['item'];
    ?>
  4. В template.php с помощью хука theme_node_form добавляю вывод данных изделия:
    <?php
    $item_id 
    $form['field_item'][0]['#default_value']['nid'];
    $item node_load($item_id);
    $item_info "Title: $item->title";
    $buttons drupal_render($form['buttons']);
    $output $item_info drupal_render($form) . $buttons;
    ?>
Аватар пользователя Antoniy Antoniy 5 июня 2012 в 9:40

"<a href="mailto:mekhos@drupal.org">mekhos@drupal.org</a>" wrote:
Я решил это вопрос так:

Таки подниму тему. А на почту заказчику и исполнителю все это через Rules высылать?

Аватар пользователя Orion76 Orion76 5 июня 2012 в 11:03

пишем функцию генерации формы.
Содержимое формы :
скрытое поле('#type'=>'hidden') с идентификатором ноды-товара
Кнопка "Заказать"

функцию сабмита формы, которая создает материал типа "Заказ" и отправляет уведомление.

в хуке ИМЯ_МОДУЛЯ_nodeapi($op,$node)
при $op=='view' вставляем форму-кнопку в вывод ноды..

все..