2012-08-02 101 views
1

我有一段時間將圖像從Wordpress遷移到Drupal遷移2.4模塊。這裏是我的映射:將Wordpress圖像遷移到2.4遷移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; 
} 

這基本上從'wp_postmeta'表返回圖像名稱和相對路徑,如'2012/05/figure1.jpg'。然後我用prepareRow()這樣的:

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

我猜有時髦的東西與我如何使用處理該文件中的字段新十歲上下的遷移模塊。 sql是正確輸出文件名,但似乎並不像圖像被複制過來。這是一個使用Migrate 2.4的Drupal 7。任何幫助表示讚賞。

回答

1

您可能需要查看migrate_example文件夾中的beer.inc行377 - 383以及相關的內容類型* migrate_example_beer *,該類型的映像字段沒有定義爲文件字段,這是我的錯誤並導致我的圖像未被填充。

希望這會有所幫助!

0

遷移2.5已經在很大程度上簡化了文件的處理,你應該檢查出來!