1

サービスによって埋められている画像でノードを保存します。drupal_write_record を使用してイメージを書き込むと、ノードに既に画像が表示されます。しかし、スクリプトの最後に node_save を呼び出すと、画像が再び消えます。

私のコード:

  $file_drupal_path= $filedata['location'];
  $file = new stdClass();
  $file->filename = $filedata['name'];
  $file->filepath = $file_drupal_path; 
  $file->filemime = $filedata['mime'];
  $file->filesize = filesize($file_drupal_path);
  $file->filesource = $filedata['name'];

  $file->uid = 1;
  $file->status = FILE_STATUS_PERMANENT;
  $file->timestamp = time();  
  $file->list = 1;

  // fid is populated by drupal_write_record
  drupal_write_record('files', $file);

  $imageData = field_file_load($file->fid, TRUE);
  return $imageData;

および node_save

function transport_service_save($node) {
    $node = (object) ($node);
    $node->promote = 1;
    node_save(node_submit($node));
    return print_r( $node , TRUE );
}

ノードの cck イメージ フィールドには、値が設定されていないキーもあります。

4

1 に答える 1

1

アンドレアス、

まったく同じ問題がありました。

ここで説明されているように使用drupal_execute()すると、問題がすぐに修正されました。

// Save the node, updated or new
// Get the node object as an array the node_form can use
$values = (array)$node;

// Save the node (this is like pushing the submit button on the node edit form)
drupal_execute('abc_node_form', $values, $node);

出典: http ://www.drupalisms.com/gregory-go/blog/use-drupalexecute-instead-of-nodesave-to-save-a-node-programmatically

しかし、公正な警告:最初の数ラウンドは魅力のように実行されましたが、今では大量のエラータイプが発生します。

warning: call_user_func_array() [function.call-user-func-array]: 
First argument is expected to be a valid callback, 'node_form' was given in ...

何が変わったのかわかりません。私がしたのは、保存を行ったページを数回呼び出してテストすることだけでした。

そして、この返信の最後の(うまくいけば!)編集。node_formを含むnode.moduleファイルを含める必要があるようですので、これを追加します。

module_load_include('', 'node', 'node.pages.inc');

あなたのコードで(のようにhook_init())トリックを行います。

ここで作業しましたが、ノードは画像をそのまま保存します。

于 2011-06-06T14:54:06.780 に答える