Как заполнить поле веб-формы данными из поля типа контента?

Я работаю над каталогом недвижимости, используя Drupal 7 и Views. У меня есть тип контента (называется предложение) со всеми необходимыми полями, и я хочу иметь возможность создать форму общего доступа, которая будет автоматически заполняться данными из типа контента. Так, например, когда вы посещаете страницу этого свойства и нажимаете кнопку "Поделиться", появляется форма с уже заполненными именем свойства, названием, изображением свойства и строкой темы, и все, что нужно сделать пользователю, это ввести адрес электронной почты получателя и нажать Отправить. Я смог сделать это с помощью пользовательского php/jquery, но мне интересно, есть ли какие-нибудь модули Drupal, которые могут достичь того же, поскольку мой код немного глючит, и у меня есть 3 формы на 1 странице (форма для обмена, контактная поддержка и контакт команда транзакций).

Вот тестовая ссылка http://greysteel.webmschf.com/?q=7-eleven-1

Вот пример кода шаблона узла, на котором отображается форма общего доступа

<form id="shareform" action="" method="post">
  <input type="text" name="shareto" />
  <input type="hidden" name="ttsubject" value="Greysteel Offering: <?php print $title; ?>" />
  <input type="hidden" name="teamemail" value="<?php print render($content['field_team_emails']['#items'][0]['value']); ?>" />
  <input type="submit" />
</form> 

Вышеуказанное работает отлично, но форма жестко запрограммирована и не может быть введена через бэкэнд Drupal. Есть ли способ обойти это? Я попытался использовать модуль Webform, но не могу найти способ автоматически вставить данные свойств в веб-форму.

1 ответ

Решение

Вы можете использовать Javascript для достижения этой цели. Вы можете напечатать значение где-нибудь на странице, спрятать его с помощью css, и при загрузке страницы захватить его значение и поместить в поле формы. это было бы быстрое решение.

Другой способ (вероятно, ваш лучший вариант) - написать функцию hook_form_alter, которая загружает узел, извлекает из него данные и предварительно заполняет поле.

function modulename_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'webform_client_form_###') {
    $node = node_load(#);
    $form['ttsubject']['#default_value'] = field_view_field('node', $node, 'field_name');
  }
}
Другие вопросы по тегам