1

新しいノードを追加するとき、または既存のノードを編集するときにノードに変更を加えるモジュールに取り組んでいます。

しかし、新しいノードを追加するとき、hook_nodeapiの操作はcase"update"とcase"insert"に一致し、 case"insert"のみに一致すると想定されることがわかりました。

それを正しい方法で行う方法、または「更新」の場合と「挿入」の場合を区別する方法はありますか?

Drupal6を使用しています

4

2 に答える 2

1

私は問題を理解しました。ここに 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;
  }
}
?>

そのため、ケースの挿入とケースの更新は一緒に呼び出されます

于 2012-01-13T14:42:21.073 に答える
0

行動したいときは $node->type を使って区別する必要があります。これで、サイトのすべてのノードで作業しています。

if ($node->type == 'the_content_type_I_want') {
  switch ($op) {
    case 'presave':
      break;
    case 'insert':
      break;
    case 'update':
      break;
    case 'view':
      break;
  }
}
于 2012-01-30T15:30:38.003 に答える