Здравствуйте!
Помогите пожалуйста решить задачку или хотя бы указать направление.
Исходные данные:
1. Есть тип содержимого "Техника" с полями:
-Title
-driver
-number_auto
-author
и др.
2. Есть тип материала "Заявка", создается пользователями на странице выбранного содержимого "Техника" во всплывающем блоке с помощью модуля Popup block
Заявка имеет поля:
-adress
-time_zakaza
и др.
ВОПРОС: Как сделать так, чтобы во всплывающем блоке отображались значение полей из текущего содержимого "Техника", а при создании материала "Заявка" эти поля вместе с полями -adress и -time_zakaza добавлялись в db для дальнейшего их использования в views?
Если использовать токены, то максимум подтягивается только URL текущей страницы "техника" (URL который остается неизменным как на странице "Техника", так и когда появляется всплывающий блок "Заявка")
Попытался установить модуль Custom tokens для создания своих токенов. Можно ли воспользоваться php и подтянуть значения из таблиц db содержимого "Техника".
Заранее спасибо за помощь!
Комментарии
https://www.drupal.org/project/prepopulate
Очень похоже на добавление в корзину, забрать значения из "Техника" конечно можно кодом в нужны поля "Заявки", часто для таких простых заказов используют https://www.drupal.org/project/webfom, но для D7 я использую https://drupal.org/project/entityform
у вэбформ есть вариант всплывайки -
Webform AJAX (webform_ajax)
ну и только что отвечал на ветке по схожей теме:
https://drupal.ru/node/137075#comment-713221
Всем спасибо! Буду пробовать
Алексей, сейчас эксперементирую с модулем entityform. В форме "Заявка" созданы поля "Имя", "Телефон", подскажите пожалуйста как можно добавить в эту форму информацию из ноды на которую и делаем эту форму-заявку (title ноды, некоторые значения из полей ноды) в виде нередактируемого текста ?
Надо передать в ссылке на создание заявки nid того что заказываем а потом через hook_form_alter использовать его например в entityreference field что вывести можно вывести любую информацию для клиента в виде view поле или полностью отредендеренную сущность которую заказываем.
Что-то типа когда делаем заявку с полной страницы техники, но можно и ссылки по $_GET передать для любого места, немного под другому тогда техническую ноду будем получать.
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);
}
}
}
Алексей, Вы уж извините, я немного медленный в понимании некоторых процессов, подкорректируйте пожалуйста мои действия?
В блоке вывел ссылку на форму заявки Заявка
Создал папку forma_zayavki c файлами forma_zayavki.info и forma_zayavki.module с вышенаписаным кодом
В форме Заявки создал Тип поля Node reference, выбор из списка
В форме Заявки появляется выпадающий список всех нод(техники)
Как же все-таки вывести в заявке просто текстом значения полей текущей ноды(техники)?
Например так
... $form['node_tehnika'] = node_view(node_load($nid_tehnika), 'teaser') ...
https://api.drupal.org/api/drupal/modules%21node%21node.module/function/...
Прошу прощения, куда же это вставить?
Вставлять в function myModule_form_alter(&$form, &$form_state, $form_id)
Алексей, могли бы вы более подробную инструкцию написать? Готов оплатить данный урок.
Так это собственно что Выше написал и всё что Вы спрашивали. Если что-то еще надо просто дайте мне доступ к Вашему тестовому ресурсу я "поколдую" с кодом, спишемся, завтра буду на связи в скайпе не с 8 как обычно а с 10. Пишите обсудим, проконсультирую помогу чем смогу.
Хорошо, спасибо, до связи.
Вопрос решился грамотным написанием Алексеем (sas@drupal.org) модулей. За что ему отдельное спасибо.