1

我正在尝试改进 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

在处理 wordpress 数据的所有获取和处理的 posts.php 文件中,我有一个函数(prepareTerms),它设置上面的 yaml 文件使用的属性“terms”。如果我将其设置为单个值,那么一切都按预期工作:

$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”。在posts.php中设置'terms'属性之前,我尝试过使用Yaml::dump。我也尝试过更改 yaml 模板以对它们进行硬编码,如下所示:

field_tags/target_id: [1, 2]

field_tags/target_id: {0:1, 1:2}

field_tags: {target_id: 1, target_id:2}

链接是我创建的一个虚拟节点的屏幕截图,我在其中分配了两个分类术语(通过 devel 加载) - http://imgur.com/nkqQoNG

任何帮助更强烈的赞赏!

4

1 回答 1

0

已修复,它只是不正确的数组格式和在 YAML 中设置错误目标的组合。我的代码现在看起来像:

帖子.php

#hardcoded
$terms = array(array('target_id'=>'1'), array('target_id'=>'2'));

帖子.yml

field_tags: terms
于 2015-09-30T10:30:06.223 回答