4

こんにちは私はdrupal7を使用していて、phpを使用してデータを解析し、後で。を使用してノードを作成することにより、xmlからデータをインポートしようとしていnode_save($node)ます。

これまでのところ、画像なしでxmlからノードを作成することに成功しています。インポート中に画像をノードに添付したい。

drupal 7はまだアルファ6になっていますが、それは良いことです。node_save($node)機能はdrupal6とほぼ同じですが、少し異なります。

さて、ここに私のコード画像ファイルのパスが変数に保存されています...どんな助けでも素晴らしいでしょう..事前に感謝します

function main($head, $txt) {
  $nodes = array();
  $nodes[0]['title'] = $head; // node name
  $nodes[0]['body'] = $txt; // body text for the node
  $nodes[0]['teaser'] = '<p>A node</p>';
  $nodes[0]['timestamp'] = 1281765101;
  $nodes[0]['format'] = 2;
  make_nodes($nodes);
}

function make_nodes($nodes) {
  $new_node = $nodes[0];
  $node = new stdClass();
  $node->type = 'article';
  $node->status = 1;
  $node->uid = 1;
  $node->title = $new_node['title'];
  $node->promote = 1;
  $node->created = $new_node['timestamp'];
  $node->timestamp = $new_node['timestamp'];
  $node->changed= $new_node['timestamp'];
  $node->sticky = 0;
  $node->language = 'en';
  $node->body['und'][0]['format'] = 3;
  $node->body['und'][0]['summary'] = $new_node['teaser'];
  $node->body['und'][0]['value'] = $new_node['body'];
  $node->revision = 0;
  node_submit($node);
  node_save($node);
}
4

2 に答える 2

2

こんにちは。ドキュメントを10時間読んだ後、私は最終的にそれを行いました...私はここに私のコードを含めています

$uri = 'bird/bird_image.jpg';
$files =  new stdClass();
$files->uid = (isset($local_user->uid) && !empty($local_user->uid)?$local_user->uid:1);
$files->filename = 'bird.jpg';
$files->uri = $uri; 
$files->filemime = file_get_mimetype($uri);
$files->status = 1;
$files->timestamp = $new_node['timestamp'];

file_copy($files);

これが、ファイルとdrupal7データベースをアップロードする方法です。

于 2010-08-27T02:26:33.330 に答える
0

Zero Cool が尋ねた最初の質問は、「ノードの作成中にイメージをノードにアタッチする方法」でした。

私はそれがどこにも完全に答えられているのを見たことがないので、ここにWindows 8のDrupal 7.27で私のために働くいくつかのコードがあります:)

このノードの「分類済み」コンテンツ タイプには、title、body、および field_advert_image (単なる画像フィールド タイプ) の 3 つのフィールドがあります。

$node = new stdClass();
$node->type = 'classified';

node_object_prepare($node); // Set some default values.

$node->language = LANGUAGE_NONE; 
$node->title = "Test node with image";

$node->body[LANGUAGE_NONE][0]['value'] = strip_tags("<b>Body text example</b>");
$node->body[LANGUAGE_NONE][0]['format'] = 'plain_text';     // or 'full_html' if you want

// Get pathauto to generate an URL alias
$node->path['pathauto'] = 1;
// Created by user 1
$node->uid = 1;

// The image directory has to be visible to Drupal on its local file-system,
// e.g. here it would be sites/default/files/adverts
$directory_uri = 'public://adverts';

// example image file in that directory:
$my_image_file = '32449.jpg';

// First create a file object, and add it to Drupal's managed_files table...
$file =  new stdClass();
$file->filename = $my_image_file;
$file->uri = $directory_uri.'/'.$my_image_file;
$file->filemime = file_get_mimetype($file->uri);
$file->status = FILE_STATUS_PERMANENT;
$file->uid = 1;
$file = file_save($file);
// ...then use the new file object.
$node->field_advert_image[LANGUAGE_NONE][0] = (array)$file;

node_save($node);       

// N.B. node_save() gets the count incremented in the file_managed table; no need to call file_usage_add()

if ($node->nid) {
    echo "- Created node ".$node->nid." ... ".print_r($node,true)."\n";
} else {
    echo "- Drupal node_save API call failed\n";
}

ご想像のとおり、このコードはコマンドライン PHP スクリプトから実行されます。

それが誰かを助けることを願っています。

于 2014-06-27T14:16:34.450 に答える