1

Drupal 7 以前に提示されたものと同様の問題を抱えていますが、これまでのところ、提案を機能させることができませんでした。コンテンツ タイプが「ソフトウェア製品」の「製品」ページがあります。製品ページに Web フォーム 'Request Information' へのリンクを配置したい 参照している製品ページのタイトルでもある製品名をフォームの (非表示の) フィールドに入力したい。私は次のことを試しましたが、参照ページではなく、フォームのタイトルが表示されるだけです。

<?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 を初めて使用します。

4

1 に答える 1

1

これは、必要なことを行うのに非常に厄介な方法です。製品ページからのリンクのクエリ文字列の一部として製品の nid を URL に入れ、それを Web フォームからロードするだけです。

ノード テンプレート/前処理で:

$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変数は参照によって渡されるため、変更はそのように保存されます。

于 2011-12-14T14:01:31.213 に答える