我正在使用migrate module将数据从多个源复制到新的drupal安装中。到目前为止,我能够从模块提供的示例中复制我需要的许多内容。我目前停留在为新创建的节点添加术语或分类。该示例显示:
// These are related terms, which by default will be looked up by name
$this->addFieldMapping('migrate_example_beer_styles', 'terms')
->separator(',');
我已经跟踪了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(',')
并且,名字:
// where source breeds is 'Dogs,German Shepherd'
$this->addFieldMapping('breeds', 'breeds')
->separator(',');
假设目的地映射是分类法的machine name
,我错了吗?
此版本的migrate module最近发布,我在网上找不到任何其他有用的示例。
答案 0 :(得分:13)
这个问题似乎仍然有一些观点,所以我想我会添加我发现的其他内容。虽然接受的答案有效,但您可以在ID:
上映射Vocabs$this->addFieldMapping('Exact Case Sensitive Vocab Name', 'source_field_name')
->sourceMigration('ExactSourceClassName')
->arguments(array('source_type' => 'tid'))
->separator(',');
->separator(',')
用于传递分隔的源ID字符串。显然,如果要映射一组值,请将其关闭。
答案 1 :(得分:1)
我目前正在使用迁移模块,我同意文档在这一点上有点想要。 :)
词汇表的“机器名称”列在词汇表中的“模块”字段中。尝试使用该值。请注意,您需要将文本提供给映射,而不是ID。
答案 2 :(得分:1)
这是我关于stackoverflow的第一篇文章,所以如果这不是提交有关此问题的更多信息的公认方式,我提前道歉......
过去几天我一直在使用Migrate模块,并且正在寻找在Drupal 7中实现此目的的方法。我在XML字段中有一个逗号分隔的分类标识列表,我想使用它,但我发现的每个例子都是从外部类或数据库源中检索。
无论如何,通过反复试验,我发现您可以在迁移类中使用一个字段,而不是引用外部术语迁移类。
$this->addFieldMapping('field_article_type', 'category_id')
->arguments(array('source_type' => 'tid'))
->xpath('/article/category_id')
->separator(',');
答案 3 :(得分:0)
在http://drupal.org/project/taxonomy_csv查看分类法csv导入模块。 它很容易使用,并做了它应有的和更多。 我最终只使用迁移模块导入gNode,并将此模块用于分类。很高兴使用。