Как создать ноду2 со значениями полей из текущей ноды1

Аватар пользователя space11 space11 24 мая 2018 в 22:13

Здравствуйте!

Помогите пожалуйста решить задачку или хотя бы указать направление.

Исходные данные:

1. Есть тип содержимого "Техника" с полями:

-Title
-driver
-number_auto
-author
и др.

2. Есть тип материала "Заявка", создается пользователями на странице выбранного содержимого "Техника" во всплывающем блоке с помощью модуля Popup block
Заявка имеет поля:
-adress
-time_zakaza
и др.

ВОПРОС: Как сделать так, чтобы во всплывающем блоке отображались значение полей из текущего содержимого "Техника", а при создании материала "Заявка" эти поля вместе с полями -adress и -time_zakaza добавлялись в db для дальнейшего их использования в views?

Если использовать токены, то максимум подтягивается только URL текущей страницы "техника" (URL который остается неизменным как на странице "Техника", так и когда появляется всплывающий блок "Заявка")

Попытался установить модуль Custom tokens для создания своих токенов. Можно ли воспользоваться php и подтянуть значения из таблиц db содержимого "Техника".

Заранее спасибо за помощь!

Лучший ответ

Аватар пользователя space11 space11 31 мая 2018 в 9:35

Вопрос решился грамотным написанием Алексеем (sas@drupal.org) модулей. За что ему отдельное спасибо.

Комментарии

Аватар пользователя sas@drupal.org sas@drupal.org 25 мая 2018 в 8:44
1

Очень похоже на добавление в корзину, забрать значения из "Техника" конечно можно кодом в нужны поля "Заявки", часто для таких простых заказов используют https://www.drupal.org/project/webfom, но для D7 я использую https://drupal.org/project/entityform

Аватар пользователя space11 space11 27 мая 2018 в 8:57

Алексей, сейчас эксперементирую с модулем entityform. В форме "Заявка" созданы поля "Имя", "Телефон", подскажите пожалуйста как можно добавить в эту форму информацию из ноды на которую и делаем эту форму-заявку (title ноды, некоторые значения из полей ноды) в виде нередактируемого текста ?

Аватар пользователя sas@drupal.org sas@drupal.org 27 мая 2018 в 9:55

Надо передать в ссылке на создание заявки nid того что заказываем а потом через hook_form_alter использовать его например в entityreference field что вывести можно вывести любую информацию для клиента в виде view поле или полностью отредендеренную сущность которую заказываем.
Что-то типа когда делаем заявку с полной страницы техники, но можно и ссылки по $_GET передать для любого места, немного под другому тогда техническую ноду будем получать.

function myModule_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'zayvka_entityform_edit_form') {

    //получили технику из node/xxx
    $node = menu_get_object();
    if (!empty($node->nid) && $node->type == 'tehnika') {
      $form['field_tehnika_entity_reference']['und']['#default_value'] = '"' . $node->title . ' (' . $node->nid . ')' . '"';
    }

   //для сохранения других полей в заявку например driver
    if ($form['#entity']->is_new) {
      $form['#validate'][] = 'myModule_ef_form_validate';
    }
  }
}

function myModule_ef_form_validate($form, &$form_state) {
  $val = $form_state['values'];

  if ($val['field_tehnika_entity_reference'][LANGUAGE_NONE][0]['target_id']
    && ($node = node_load($val['field_tehnika_entity_reference'][LANGUAGE_NONE][0]['target_id']))
  ) {
    if (!empty($node->field_driver[LANGUAGE_NONE][0]['value'])) {
      form_set_value($form['field_driver'][LANGUAGE_NONE][0]['value'], $node->field_driver[LANGUAGE_NONE][0]['value'], $form_state);
    }
  }
}

Аватар пользователя space11 space11 27 мая 2018 в 16:58

Алексей, Вы уж извините, я немного медленный в понимании некоторых процессов, подкорректируйте пожалуйста мои действия?
В блоке вывел ссылку на форму заявки Заявка
Создал папку forma_zayavki c файлами forma_zayavki.info и forma_zayavki.module с вышенаписаным кодом
В форме Заявки создал Тип поля Node reference, выбор из списка
В форме Заявки появляется выпадающий список всех нод(техники)
Как же все-таки вывести в заявке просто текстом значения полей текущей ноды(техники)?

Аватар пользователя space11 space11 27 мая 2018 в 21:18

Алексей, могли бы вы более подробную инструкцию написать? Готов оплатить данный урок.

Аватар пользователя sas@drupal.org sas@drupal.org 27 мая 2018 в 21:24
1

Так это собственно что Выше написал и всё что Вы спрашивали. Если что-то еще надо просто дайте мне доступ к Вашему тестовому ресурсу я "поколдую" с кодом, спишемся, завтра буду на связи в скайпе не с 8 как обычно а с 10. Пишите обсудим, проконсультирую помогу чем смогу.