2011-12-14 95 views
1

Drupal 7 我有一个类似的问题,以前已经提出过,但到目前为止,我还没有能够使任何建议的工作。 我有'产品'页面的内容类型'软件产品'。我想在产品页面上放置一个指向Webform'请求信息'的链接,我想用产品名称(也是引用产品页面的标​​题)在表单上填充(隐藏)字段。 我已经尝试了以下,但这只是导致显示窗体的标题 - 而不是转介页。填充Webform隐藏字段与转介节点标题

<?php 
/** 
* Implementation of hook_form_alter(). 
*/ 
function AddNodeInfoToForm_form_alter(&$form, $form_state, $form_id) { 
    switch($form_id) { 
     case 'webform_client_form_10': // the id of the form 
       {$current_object = menu_get_object(); 
       $product_title = $current_object->title; 
       $form['submitted']['product']['#default_value'] = $product_title; } 
      return $form; 
     } 

} 我将不胜感激任何指针 - 我是新来的Drupal

回答

1

这是一个相当混乱的方式圆做你需要,你应该只是把URL作为部分NID的产品什么查询字符串的链接从您的产品页面链接,然后从网络表单加载它。

在你的节点模板/预处理:

$webform_path = 'node/10'; // Or whatever the webform's nid is 
$link = l('Request Information', $webform_path, array(
    'query' => array(
    'product_nid' => $product_node->nid 
) 
)); 
echo $link; 

然后在您的形式改变:

function AddNodeInfoToForm_form_alter(&$form, $form_state, $form_id) { 
    if ($form_id == 'webform_client_form_10' && isset($_GET['product_nid']) && is_numeric($_GET['product_nid'])) { 
    $product_node = node_load($_GET['product_nid']); 
    if ($product_node) { 
     $product_title = $product_node->title; 
     $form['submitted']['product']['#default_value'] = $product_title; 
    } 
    } 
} 

注意不要从hook_form_alter函数返回的形式,将$form变量传递作为参考,所以变化以这种方式存储。