Drupal 7 我遇到了类似的问题,但是到目前为止,我还没有能够提出任何建议。 我有'产品'页面的内容类型'软件产品'。我想在指向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的新手
答案 0 :(得分:1)
执行您需要的操作非常混乱,您应该将产品nid放在URL中,作为产品页面链接中查询字符串的一部分,然后从webform中加载它。
在您的节点模板/预处理中:
$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
变量通过引用传入,因此更改以这种方式存储。