使用hook_update()保持数据同步

老葛的Drupal培训班 Think in Drupal

当编辑完一个节点,并且节点核心数据已被写入到数据库中时,将会调用钩子update()。在这一钩子中可以编写对相关表的更新操作。和钩子hook_insert()一样,只有在节点为当前节点类型时才调用这个钩子。例如,如果节点类型在hook_node_info()中的“module”键为“joke”的话,那么将调用joke_update()。
 
/**
 * Implementation of hook_update().
 */
function joke_update($node) {
if ($node->revision) {
joke_insert($node);
}
else {
db_query("UPDATE {joke} SET punchline = '%s' WHERE vid = %d",
$node->punchline, $node->vid);
}
}
 
/**
 * Implementation of hook_update().
 */
function joke_update($node) {
    if ($node->revision) {
        // New revision; treat it as a new record.
        joke_insert($node);
    }
    else {
        db_query("UPDATE {joke} SET punchline = '%s' WHERE vid = %d",
        $node->punchline, $node->vid);
    }
}
 
在这里,你首先检查看是否设置了节点修订本标记,如果设置了,你为笑话妙语创建一个新的拷贝来替代旧的版本。
 

Drupal版本: