1

Migrate 2.4 モジュールを使用して、Wordpress から Drupal に画像を移行するのに時間がかかっています。ここに私のマッピングがあります:

$this->addFieldMapping('field_image','images');
$this->addFieldMapping('destination_file', 'images');
$this->addFieldMapping('field_image:source_dir')
 ->defaultValue('/Users/grafa/htdocs/wordpress/wp-content/uploads');
$this->addFieldMapping('field_image:file_class')
  ->defaultValue('MigrateFileUri');

画像は、wp_postmeta テーブルをクエリし、その結果を prepareRow() 関数に返す関数から取得されます。

function getImages($row) {
$post_id = $row->id;
$results = db_query("
  SELECT pm.post_id, pm.meta_key, pm.meta_value FROM streetroots_wp.wp_postmeta AS pm LEFT JOIN streetroots_wp.wp_posts AS p ON pm.post_id=p.id WHERE p.post_parent = $post_id AND pm.meta_key='_wp_attached_file';");

$images = array();
foreach($results as $result) {
  $images[] = $result->meta_value;
}
return !empty($images) ? $images : NULL;
}

これは基本的に、「2012/05/figure1.jpg」のような wp_postmeta テーブルから画像名と相対パスを返します。次に、次のように prepareRow() を使用します。

 function prepareRow($row) {
$row->images = $this->getImages($row);
}

ファイル フィールドを処理する新しいような移行モジュールの使用方法には、何かおかしな点があると思います。SQLはファイル名を正しく出力しますが、画像がコピーされているようには見えません。これは、Migrate 2.4 を使用する Drupal 7 です。どんな助けでも大歓迎です。

4

2 に答える 2

1

migrate_example フォルダー内の beer.inc 行 377 ~ 383 と、関連するコンテンツ タイプ *migrate_example_beer* を確認してください。これには、ファイル フィールドではなく画像フィールドが定義されています。これは私の間違いであり、画像が取り込まれません.

お役に立てれば!

于 2012-08-23T12:21:47.653 に答える
0

Migrate 2.5 では、ファイルの処理が大幅に簡素化されています。ぜひチェックしてみてください。

于 2012-11-13T13:47:54.103 に答える