2011-12-14 83 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變量傳遞作爲參考,所以變化以這種方式存儲。