我正在开发一个模块,在添加新节点或编辑现有节点时对节点进行更改,
但我发现,当添加一个新节点时,hook_nodeapi 的操作匹配case "update" 和 case "insert",而假设它只匹配case "insert"
有没有办法以正确的方式做到这一点,或者区分“更新”案例和“插入”案例?
我正在使用 Drupal 6
我正在开发一个模块,在添加新节点或编辑现有节点时对节点进行更改,
但我发现,当添加一个新节点时,hook_nodeapi 的操作匹配case "update" 和 case "insert",而假设它只匹配case "insert"
有没有办法以正确的方式做到这一点,或者区分“更新”案例和“插入”案例?
我正在使用 Drupal 6
我已经解决了问题,这里是 drupal.org 的 hook_nodeapi
<?php
function hook_nodeapi(&$node, $op, $a3 = NULL, $a4 = NULL) {
switch ($op) {
case 'presave':
if ($node->nid && $node->moderate) {
// Reset votes when node is updated:
$node->score = 0;
$node->users = '';
$node->votes = 0;
}
break;
case 'insert':
case 'update':
if ($node->moderate && user_access('access submission queue')) {
drupal_set_message(t('The post is queued for approval'));
}
elseif ($node->moderate) {
drupal_set_message(t('The post is queued for approval. The editors will decide whether it should be published.'));
}
break;
case 'view':
$node->content['my_additional_field'] = array(
'#value' => theme('mymodule_my_additional_field', $additional_field),
'#weight' => 10,
);
break;
}
}
?>
所以对于 case insert 和 case update 一起调用
当你想行动时,你需要使用 $node->type 来区分。现在您正在对站点的每个节点进行操作。
if ($node->type == 'the_content_type_I_want') {
switch ($op) {
case 'presave':
break;
case 'insert':
break;
case 'update':
break;
case 'view':
break;
}
}