如何从hook_form_alter访问节点/内容变量

时间:2012-10-25 04:24:47

标签: drupal drupal-6

我有一个我需要在hook_form_alter中访问的cck字段,因此我可以使用动态值设置某个字段的默认值。

显然,node_load不能帮我完成工作。

   if ($form_id == 'some_form_id') {
    $node = node_load($item->nid); 
    $somevariable = $node->field_cck_foo[0]['value'] * 2;
    $form ['xxx']['xxx']['#default_value'] = $somevariable; 
}

我如何访问节点项,以便在hook_form_alter中使用它?请指教。感谢。

3 个答案:

答案 0 :(得分:1)

node_load()将获取所有CCK字段值,尝试执行var_dump以查看正在进行的操作。

如果node_load()没有带来完整的节点结构,请尝试使用此解决方法清除缓存http://drupal.org/node/158237#comment-4593950

答案 1 :(得分:1)

hook_form_alter()是一个通用钩子,可用于改变任何形式。为了帮助您找到解决方案,我们需要有关您正在使用的上下文的更多信息(例如,您尝试更改哪种形式?)

我的猜测是你正在改变node_form()。如果您查看表单构建器函数,您会看到该节点在$ form_state ['node']中可用,供您使用。

答案 2 :(得分:0)

对于D7:

$arg = arg();
if($arg[0] == 'node' && !empty($arg[1])) {
    $node = node_load(arg(1));
}
相关问题