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

时间:2010-12-20 15:24:38

标签: drupal drupal-7 migrate

我正在使用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最近发布,我在网上找不到任何其他有用的示例。

4 个答案:

答案 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,并将此模块用于分类。很高兴使用。