当一个新节点被保存时,会调用钩子insert()。在这个钩子中你可以将自定义数据存储到相关的表中。只有对于在节点类型元数据中定义的模块,才为其调用这一钩子。该信息定义在hook_node_info()的“module”键中(参看“提供我们节点类型的相关信息”一节)。例如,如果“module”键的值为joke,那么就会调用joke_insert()。如果你启用了书籍模块,并且新加了一个书籍类型的节点,此时就不会调用joke_insert();这里将调用的是book_insert(),这是因为book.module使用“module”键为book来定义了它的节点类型。
注意 如果你想在插入一个不同类型的节点时,对其做些操作的话,你需要把它当作一个普通的节点提交,使用钩子hook_nodeapi()插入一些操作。参看“使用hook_nodeapi()操纵其它类型的节点”一节。
下面是为joke.module编写的hook_insert()函数:
/**
* Implementation of hook_insert().
*/
function joke_insert($node) {
db_query("INSERT INTO {joke} (nid, vid, punchline) VALUES (%d, %d, '%s')",
$node->nid, $node->vid, $node->punchline);
}
老葛的Drupal培训班 Think in Drupal