Как добавить термины таксономии с помощью Drupal Migrate - PullRequest
6 голосов
/ 20 декабря 2010

Я использую модуль переноса для копирования данных из нескольких источников в новую установку 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, но термины никогда не ассоциируются:

По идентификатору:

// 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 для таксономии?

Эта версия модуля переноса была недавно выпущена, я не нашел других полезных примеровв Интернете.

Ответы [ 4 ]

13 голосов
/ 08 января 2011

Кажется, этот вопрос все еще получает некоторые взгляды, поэтому я решил добавить еще кое-что, что открыл. Пока принятый ответ работает, вы можете отобразить Vocabs на ID:

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

->separator(',') используется для передачи разделенной строки идентификаторов источника. Очевидно, не включайте это, если вы отображаете массив значений.

1 голос
/ 30 марта 2011

Это мой первый пост о stackoverflow, поэтому я заранее извиняюсь, если это не приемлемый способ представить дополнительную информацию по этой проблеме ...

Я спотыкался с модулем Migrateв течение последних нескольких дней я искал способ сделать это в Drupal 7. У меня был список разделенных запятыми идентификаторов таксономии в поле XML, которое я хотел использовать, но каждый найденный мной пример извлекался из внешнего класса,или из источника базы данных.

В любом случае, методом проб и ошибок я обнаружил, что вы можете использовать поле в классе миграции, а не ссылаться на внешний термин класс миграции.

$this->addFieldMapping('field_article_type', 'category_id')
     ->arguments(array('source_type' => 'tid'))
     ->xpath('/article/category_id')
     ->separator(',');
1 голос
/ 23 декабря 2010

В настоящее время я сам работаю с модулем миграции, и я согласен с тем, что на данный момент документации не хватает. :)

«Имя машины» словаря указано в таблице словаря, в поле «модуль». Попробуйте использовать это значение. Обратите внимание, что вам нужно ввести текст в отображение, а не идентификаторы.

0 голосов
/ 12 февраля 2012

Проверьте модуль импорта CSV таксономии в http://drupal.org/project/taxonomy_csv. Он был прост в использовании и делал то, что предполагалось и многое другое.В итоге я использовал только модуль migrate для importin gNodes и использовал этот модуль для таксономии.Было приятно пользоваться.

...