如何使用Drupal Migrate添加分类术语

lab*_*bue 6 drupal migrate drupal-7

我正在使用迁移模块将数据从多个源复制到新的drupal安装.到目前为止,我能够从模块提供的示例中复制我需要的许多内容.我目前停留在为新创建的节点添加术语或分类.该示例显示:

// These are related terms, which by default will be looked up by name
$this->addFieldMapping('migrate_example_beer_styles', 'terms')
     ->separator(',');
Run Code Online (Sandbox Code Playgroud)

我已经跟踪了migrate_example_beer_styles目标映射,它似乎是machine name那个分类法.

我尝试用我machine_name应该做的每一种变化来模仿这种行为,但这些术语似乎永远不会联系起来:

按id:

// where source breed_id is '1,100' - it finds mapped values accordingly
$this->addFieldMapping('breeds', 'breed_id')
     ->sourceMigration('BreedMigration')
     ->separator(',')
Run Code Online (Sandbox Code Playgroud)

并且,按名称:

// where source breeds is 'Dogs,German Shepherd'
$this->addFieldMapping('breeds', 'breeds')
     ->separator(',');
Run Code Online (Sandbox Code Playgroud)

假设目的地映射是machine name分类法,我错了吗?

这个版本的迁移模块最近发布,我还没有在网上找到任何其他有用的示例.

lab*_*bue 13

这个问题似乎仍然有一些观点,所以我想我会添加我发现的其他内容.虽然接受的答案有效,但您可以在ID上映射Vocabs:

$this->addFieldMapping('Exact Case Sensitive Vocab Name', 'source_field_name')
     ->sourceMigration('ExactSourceClassName')
     ->arguments(array('source_type' => 'tid'))
     ->separator(',');
Run Code Online (Sandbox Code Playgroud)

->separator(',')用于传递分隔的源ID字符串.显然,如果要映射一组值,请将其关闭.


Joh*_*ala 1

我目前正在自己​​使用迁移模块,并且我同意目前文档有些不足。:)

词汇表的“机器名称”列在词汇表的“模块”字段中。尝试使用该值。请注意,您需要将文本输入到映射中,而不是 ID。