Import von Drupal 7 zu Drupal 7 mit Migrate
am 03.07.2013 - 10:18 Uhr in
Hallo Liebe Leute,
Ich möchte die aktuellen Inhalte einer Online-Seite gerne auch in meiner Entwicklungsumgebung haben, um mit diesen aktuellen Daten testen zu können und bugs besser beheben zu können. Für diesen Zweck habe ich mir das Migrate Modul angeschaut. Habe Klassen für einen Inhaltstypen, ein Vokabular und für die User geschrieben, funktioniert auch alles super.
Mein Problem ist nun das ich die Felder einzeln hinzufügen muss
$query = Database::getConnection('default', 'legacy')
->select('example_pages', 'p')
->fields('p', array('pgid', 'page_title', 'page_body'));
und einzeln jedes Feld mappen muss.
$this->addFieldMapping('fied_123', 'field_123');
$this->addFieldMapping('field_456', 'field_456');
Ich migriere von Drupal7 zu Drupal7, die Inhaltstypen sind die selben, und die Felder sind die gleichen. Es wäre also wünschenswert wenn das Modul die Felder des Inhaltstyps eigenständig herausfindet und diese auch mapt, da sie ja auf die selben Felder verweisen. (Es ist die selbe Webseite, es ist alles gleich, Inhaltstypen und Felder)
Hat damit schon jemand Erfahrung gemacht?
Mir ist auch das Modul migrate_d2d bekannt, aber wie ich das gesehen habe, muss man dort auch jedes Feld hinzufügen und jedes Feld mappen.
Ich arbeite gerade an einem Algorithmus, der die Felder automatisch bestimmt, die zum Inhaltstyp gehören und diese automatisch mapt. Leider komme ich auch da nicht weiter, vielleicht könnt ihr mir da auch helfen:
for ($i=0; $i < sizeof($typeFields); $i++) {
if(Tabelle "field_revision_field_123" hat Spalte "field_123_value"){
$query->join(
"field_revision_".$typeFields[$i],
$typeFields[$i]."_table",
"n.nid = ".$typeFields[$i]."_table.entity_id"
);
$query->addField($typeFields[$i]."_table", $typeFields[$i]."_value");
}else{hole Wert aus anderer Spalte}
}
Die Daten der Felder sind ja in den Tabellen field_revisions_field_123 gespeichert, und dort "meistens" in der Spalte "field_123_value", nur halt nicht immer. Ich möchte also abfragen, ob die jeweilige Tabelle eine Spalte field_value_123 hat, wenn ja geht es normal weiter, wenn nicht, wird nach dem Wert in einer anderen Spalte gesucht.
Also noch mal zusammenfassend: Ich versuche in Drupal 7 Inhalt der selben Webseite zwischen verschiedenen Instanzen zu synchronisieren, d.h. Inhaltstypen und Felder sind die gleichen, deshalb muss es eine Möglichkeit geben, das zu automatisieren, weil ich nicht jedes Feld einzeln auslesen und mappen will.
Weiterhin suche ich eine Möglichkeit für meinen Fall um zu prüfen ob die Spalte field_123_value existiert.
Liebe Grüße ;)
- Anmelden oder Registrieren um Kommentare zu schreiben
Hm, ob Migrate in deinem Fall
am 03.07.2013 - 11:27 Uhr
Hm, ob Migrate in deinem Fall sinnvoll ist? Um Inhalte zwischen dev - stage - live Instanz synchron zu halten, kannst du besser:
https://drupal.org/project/deploy
https://drupal.org/project/drupal_sync
einsetzen.
Gruss Guido
Gut, danke werde ich mir
am 03.07.2013 - 11:51 Uhr
Gut, danke werde ich mir anschauen.
Das Migrate Modul ist wohl eher dafür gedacht, wenn Inhalte einmalig initial übertragen werden sollen?
ja von älteren Drupal
am 03.07.2013 - 12:04 Uhr
ja von älteren Drupal Versionen, anderen Systemen oder kompletten Eigenentwicklungen
Hat jemand mit diesen Modulen
am 04.07.2013 - 09:54 Uhr
Hat jemand mit diesen Modulen Erfahrung?
https://drupal.org/project/deploy
https://drupal.org/project/drupal_sync
So wie ich das gesehen habe, funktionieren diese Module so, das von der Produktionsseite zur Developmentseite Daten gesendet werden. Ich hätte es aber gerne so, das sich die Developmentseite die Daten von der Produktionsseite abholt. Ist das möglich?