Question

J'utilise le migrate le module pour copier des données provenant de plusieurs sources à une nouvelle installation de Drupal. Jusqu'à présent, je suis en mesure de reproduire beaucoup de ce que je dois partir des exemples fournis avec le module. Je suis actuellement coincé sur l'ajout de termes ou taxonomie aux nœuds nouvellement créés. L'exemple montre:

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

J'ai retracé la cartographie de destination migrate_example_beer_styles et il semble être le machine name pour cette taxonomie.

J'ai essayé d'imiter ce comportement avec toutes les variantes de ce que mon machine_name devrait être, mais les termes ne semblent jamais associés:

Par id:

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

Et, par son nom:

// where source breeds is 'Dogs,German Shepherd'
$this->addFieldMapping('breeds', 'breeds')
     ->separator(',');

Ai-je tort en supposant que le mappage de destination est le machine name pour une taxonomie?

Cette version du migrate le module a été publié récemment, je ne l'ai pas trouvé d'autres exemples utiles sur le web.

Était-ce utile?

La solution

Je travaille actuellement avec le module migrate moi-même, et je suis d'accord que la documentation manque un peu à ce moment. :)

Le « nom de la machine » d'un vocabulaire est listé dans le tableau de vocabulaire, dans « module » sur le terrain. Essayez d'utiliser cette valeur. Prenez note que vous devez nourrir le texte dans la cartographie, et non pas les ids.

Autres conseils

Cette question semble encore à obtenir des points de vue, donc je pensais que je rajouterais ce que je l'ai découvert. Alors que les travaux de réponse acceptée, vous êtes en mesure de carte Vocabs sur ID:

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

->separator(',') utilisé pour faire passer une chaîne délimitée par des identifiants de source. De toute évidence, laisser ce hors si vous cartographiez un tableau de valeurs.

Ceci est mon premier post sur StackOverflow, donc je présente mes excuses à l'avance si ce n'est pas la façon dont ont accepté de soumettre plus d'informations sur cette question ...

J'ai été titubant avec le module Migrer depuis quelques jours et cherchait une façon de le faire dans Drupal 7. J'avais une liste délimitée par des virgules ids taxonomie dans un champ XML que je voulais utiliser , mais chaque exemple, je trouve récupérait d'une classe externe, ou à partir d'une base de données source.

Quoi qu'il en soit, par essais et erreurs, je trouve que vous pouvez utiliser un champ dans la classe Migrate, au lieu de référence une classe de migration terme externe.

$this->addFieldMapping('field_article_type', 'category_id')
     ->arguments(array('source_type' => 'tid'))
     ->xpath('/article/category_id')
     ->separator(',');

Consultez la taxonomie csv module d'importation à http://drupal.org/project/taxonomy_csv . Il était facile à utiliser et a fait ce qu'il était censé et plus. J'ai fini seulement en utilisant le module émigrent pour gNodes Importin et utilisé ce module pour la taxonomie. Ce fut un plaisir à utiliser.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top