2010-12-20 13 views
6

Ich verwende die migrate module zu kopieren Daten aus verschiedenen Quellen zu einer neuen Drupalinstallation hinzuzufügen. Bis jetzt bin ich in der Lage, eine Menge von dem, was ich brauche, aus den Beispielen, die mit dem Modul bereitgestellt werden, zu replizieren. Ich bin derzeit fest auf Hinzufügen von Begriffen oder Taxonomie zu neu erstellten Knoten. Das Beispiel zeigt:Wie kann ich Taxonomie Begriffe mit Drupal Migrate

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

Ich das migrate_example_beer_styles Ziel-Mapping verfolgt habe und es scheint, die machine name für die Taxonomie zu sein.

Ich habe versucht, mit allen Variationen dieses Verhalten zu imitieren, was mein machine_name sollte sein, aber die Bedingungen scheinen nie verbunden zu bekommen:

von id:

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

Und nach Name:

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

Bin ich falsch angenommen, die Zielzuordnung ist die machine name für eine Taxonomie?

Diese Version des migrate module vor kurzem veröffentlicht wurde, habe ich keine andere hilfreiche Beispiele, die im Internet nicht gefunden.

Antwort

1

Ich arbeite derzeit mit Migrate Modul selbst, und ich stimme, dass die Dokumentation etwas an dieser Stelle fehlt. :)

Der ‚Maschinenname‘ ein Vokabulars in der Vokabel Tabelle aufgeführt, in dem ‚Modul‘ Feldes. Versuchen Sie, diesen Wert zu verwenden. Beachten Sie, dass Sie den Text in das Mapping einspeisen müssen, nicht die IDs.

+1

ich auf die Lösung haben Sie stolpern empfohlen. Ich verwendete den Namen des Vokabulars (genauer Fall ist erforderlich) anstelle eines maschinenfreundlichen Namens. Außerdem funktioniert das Mapping auf Text statt auf ID. – labue

13

Diese Frage scheint immer noch einige Ansichten zu bekommen, also dachte ich, ich würde hinzufügen, was ich noch entdeckt habe. Während die akzeptierte Antwort funktioniert, sind Sie in der Lage Vocabs auf ID zur Karte:

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

->separator(',') verwendet, um eine getrennte Zeichenfolge von Quell-IDs für geben. Lassen Sie das natürlich offen, wenn Sie ein Array von Werten zuordnen.

+0

Ich habe versucht, die Tid in meinen Migrationen einfach zu übergeben, und bis ich dieses Problem fand, konnte ich nicht herausfinden, warum das nicht funktionierte. Jetzt weiß ich! – geerlingguy

+1

Ich wollte nur darauf hinweisen, dass dieser Code Warnungen mit der neuesten Version des Migrate-Moduls ausgibt. Der richtige Weg, um Karten Vocabs auf ID wäre: '$ this-> addFieldMapping ('Exact Case Sensitive Vocab Name: source_type') -> default ('tid');' – bmunslow

+1

Ok, so Wenn ich (' field_city') (entityReference) für Taxonomiebegriff in Ziel und ('Cities') Taxonomievokabular und Spalte (' name') aus meiner Quellentabelle, wie erfasse ich das? '$ this-> addFieldMapping ('Cities: source_type') -> defaultValue ('tid');' Was brauche ich noch? –

1

Dies ist mein erster Beitrag auf Stackoverflow, so dass ich entschuldige mich im Voraus, wenn dies nicht die akzeptierte Art und Weise mehr Informationen zu diesem Thema vorlegen ...

Ich habe mit dem Migrate Modul herumstolpern für in den letzten Tagen und waren auf der Suche nach einer Möglichkeit, diese in Drupal zu tun 7. ich in einem XML-Feld eine durch Kommata getrennte Liste von Taxonomie-IDs hatte, die ich verwenden wollte, aber jedes Beispiel fand ich von einer externen Klasse wurde das Abrufen oder aus einer Datenbankquelle.

Wie auch immer, durch Versuch und Irrtum fand ich, dass Sie ein Feld innerhalb der Migrationsklasse verwenden können, anstatt eine externe Begriffsmigrationsklasse zu referenzieren.

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

Schauen Sie sich die Taxonomie csv Import-Modul bei http://drupal.org/project/taxonomy_csv. Es war einfach zu bedienen und tat, was es sollte und mehr. Ich habe am Ende nur das Migrationsmodul zum Importieren von Knoten verwendet und dieses Modul für die Taxonomie verwendet. Es war eine Freude zu benutzen.

Verwandte Themen