繁体   English   中英

使用Migrate 2.4将Wordpress图像迁移到Drupal

[英]Migrating Wordpress Images to Drupal with Migrate 2.4

我正在使用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;
}

这基本上从wp_postmeta表返回图像名称和相对路径,例如“ 2012/05 / figure1.jpg”。 然后,我像这样使用prepareRow():

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

我猜想我在使用处理文件字段的新迁移模块时有些时髦。 sql正确输出了文件名,但似乎图像没有被复制过来。 这是使用Migrate 2.4的Drupal 7。 任何帮助表示赞赏。

您可能想看一看migrate_example文件夹中的beer.inc行377-383,以及相关的内容类型* migrate_example_beer *,该类型的图像字段定义为不是文件字段,这是我的错误,导致我的图像未填充。

希望这可以帮助!

Migrate 2.5在很大程度上简化了文件的处理,您应该检查一下!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM