我正在使用Drupal 7和Views处理房地产目录。我有一个内容类型(称为产品),上面包含所有必需的字段,我希望能够创建一个共享表单,该表单将自动填充内容类型中的数据。因此,例如当您访问该属性的页面并单击共享按钮时,会弹出一个表单,其中包含已填写的属性名称,标题,属性图像和主题行,并且用户所要做的就是输入收件人电子邮件并点击发送。我能够用自定义的php / jquery做到这一点,但我想知道是否有任何Drupal模块可以实现相同的事情,因为我的代码有点错误,我在1页上有3个表单(共享表单,联系支持和联系人)交易团队)。
这是一个测试链接 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模块但是找不到将属性数据自动插入到webform中的方法。
答案 0 :(得分:0)
您可以使用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');
}
}