我正在努力改进wordpress到drupal 8迁移模块(https://github.com/amitgoyal/d8_migrate_wordpress)并添加导入分类术语的功能。 我已经编写了将分类术语加入帖子的查询,但是在我的drupal内容类型文章中将多个术语分配给一个字段(称为标签,这是对分类术语的实体引用)时遇到了麻烦。 我已经创建了一个清单文件,用于映射到我的文章内容类型:
id: posts
label: Wordpress Posts
migration_groups:
- Wordpress
source:
plugin: posts
destination:
plugin: entity:node
process:
nid: id
vid: id
type: type
langcode:
plugin: default_value
default_value: "und"
title: post_title
uid: post_author
status:
plugin: default_value
default_value: 1
body/value: post_content
body/format: normal
field_image/target_id: post_image
field_tags/target_id: terms
在我的posts.php文件中,它处理wordpress数据的所有提取和处理,我有一个函数(prepareTerms),它设置属性' terms',由上面的yaml文件使用。如果我将其设置为单个值,那么一切都按预期工作:
$terms = '4';
$row->setSourceProperty('terms', $terms);
但是,我想将此属性设置为数组(对于多个分类术语),如下所示:
$results = $query->execute()->fetchAll();
$terms = array();
foreach($results as $term) {
$terms[] = $term['term_id'];
}
//$terms = Yaml::dump($terms);
$row->setSourceProperty('terms', $terms);
由于每个分类术语都应该是一个数字(术语ID),我应该只是传递一个整数数组,但我似乎无法将其映射到' field_tags'。在设置'术语之前,我尝试过使用Yaml :: dump。 posts.php中的财产。我也尝试过更改yaml模板来硬编码这些,如下所示:
field_tags/target_id: [1, 2]
field_tags/target_id: {0:1, 1:2}
field_tags: {target_id: 1, target_id:2}
Linked是我创建的虚拟节点的屏幕截图,其中我已经分配了两个分类术语(通过devel加载) - http://imgur.com/nkqQoNG
任何帮助更强烈的赞赏!
答案 0 :(得分:0)
修正了,它只是不正确的数组格式的组合,并在YAML中设置了错误的目标。 我的代码现在看起来像:
Posts.php
#hardcoded
$terms = array(array('target_id'=>'1'), array('target_id'=>'2'));
Posts.yml
field_tags: terms