是否可以使用nodeapi将drupal中的字段设置为某个值

时间:2013-03-18 14:57:13

标签: drupal

所以我将这个字段命名为field_movie_cast_count这是一个名为movie的内容字段,所以我想要的是每当电影更新时(比如我添加另一个演员){{1 }字段也会更新。我已经使用此代码成功完成了它:

field_movie_cast_count

现在,我的老板告诉我,我不应该使用查询。那么,如何通过不使用数据库查询来实现这一目标呢?

是不是可以设置field_movie_cast_count [] ['value'] = $ count?我试过这个代码它不起作用。洛尔

或者我应该重新提出问题是否有其他方式显示计数?除了我的方式?因为也许我不明白我的老板。

1 个答案:

答案 0 :(得分:2)

hook_nodeapi()具有presave操作,该操作在节点(和字段数据)提交到数据库之前调用。该操作的定义是:

  

节点已通过验证并即将保存。在将节点保存到数据库之前,模块可以使用它来更改节点。

您可以使用它来更新字段值,而无需手动命中数据库(无论如何都会被覆盖),如下所示:

function MYMODULE_nodeapi(&$node, $op) {
  if ($op == 'presave' && $node->type == 'movie') {
    $node->field_movie_cast_count[0]['value'] = count($node->field_movie_cast);
  }
}