Gibt es eine Möglichkeit, nur Knoten zu migrieren?

7

Ich möchte keine vollständige Migration durchführen. Ich möchte nur und ausschließlich Knoten migrieren (vorzugsweise auch mit ihren Metatag- Metadaten). Keine Ansichten, keine Panels, keine Kontexte, keine URL-Weiterleitungen - nur Knoten ...

Ich frage dies, nachdem ich beim vollständigen D7 >> D8-Upgrade und bei Verwendung des Drupal-Upgrade-Moduls auf einige Probleme gestoßen bin (ich habe hier in DA sogar einen Thread dazu geöffnet ). Daher suche ich nach Möglichkeiten, nur eine Teilmigration oder eine Teilmigration durchzuführen.

Ist es in Bezug auf Knoten möglich?

Gemeinschaft
quelle
1
Ich würde vorschlagen, nach XML zu exportieren und Feeds für den Import zu verwenden, aber da "Dieses Modul wird derzeit auf Drupal 8 portiert, ist aber noch nicht verwendbar." es ist keine Option. Noch.
Mołot
Werfen Sie einen Blick auf drupal.org/project/bundle_copy. Es exportiert nur die Struktur und nicht die Daten und exportiert dann das Feed-Modul, um Importdaten zu exportieren
Bala,
@ Bala, haben Sie es in Bezug auf D7 >> D8 Migration versucht? Oder denken Sie zumindest, dass es am wahrscheinlichsten funktioniert?
@benos noch nicht! Ich schlage die Option vor, es liegt an Ihnen
Bala

Antworten:

9

Sie müssen keine vollständige Migration durchführen. Sie können den Upgrade-Prozess initialisieren, indem Sie eine Verbindung zur alten Site herstellen. Dadurch werden Migrationen erstellt. Dann können Sie, anstatt sie automatisch auszuführen, nur einige davon mit der Benutzeroberfläche ausführen, die vom Projekt upgrade_tools bereitgestellt wird (glaube ich?).

Migrationen sind jedoch abhängig. Um die Knotenmigration ausführen zu können, müssen Sie standardmäßig einige andere ausführen, z. B. Benutzer, Textformate und auch die Felder.

Sie können versuchen, dies zu ändern, indem Sie die erstellten Migrationen entweder mit drush cedit oder mit export / import bearbeiten. Ich glaube, jemand arbeitet auch an einer Benutzeroberfläche dafür.

Sie können auch jede Zuordnung und die Art der Migration von Feldern anpassen. Das Standardverhalten ist, dass jedes Feld und jede Konfiguration 1: 1 migriert wird. Um ehrlich zu sein, kann ich mir nicht vorstellen, dass die meisten Websites dies möchten. Stattdessen stelle ich mir vor, dass sie eine neue D8-Site erstellen und dann den Inhalt importieren.

Siehe die Migrationsdokumentation . Es gibt auch bereits viele Blog-Beiträge zu diesem Thema, aber es ist keine triviale Sache.

Alternativ können Sie versuchen, Ihren Inhalt zu exportieren / importieren, wie in den Kommentaren erwähnt. Feeds ist noch nicht ganz fertig. Sie können jedoch einen Export- und Import von Ansichten verwenden, indem Sie einen benutzerdefinierten Code schreiben.

Berdir
quelle
Es tut mir leid, dass ich ein ernstes Problem (das bis jetzt andauert) mit dem Drupal-Upgrade-Modul hatte und es scheint, dass ich es einfach nicht verwenden kann. Ich habe es hier ausführlich beschrieben: drupal.stackexchange.com/questions/185364/…
Berdir, Sie haben geschrieben: "Ich kann mir vorstellen, dass sie eine neue D8-Site erstellen und dann den Inhalt importieren." Nun, es klingt großartig für mich. Gibt es eine Möglichkeit, Inhalte direkt zu importieren? Ich meine, gibt es einen Bot, der alle Knoten in einer D7-Site auf eine D8-Site auf demselben Server umschreibt, ohne die aktuellen (scheinbar noch experimentellen) Module zu verwenden?
Ich werde jetzt auch die Links überprüfen, aber wenn Sie hier auf meine Frage oben in Ihren eigenen Worten beantworten könnten, kann es fantastisch sein,
5

Migration ist dafür ein bisschen schwer. In Drupal 7 gab es einige Module, die nur den Import / Export von Inhalten betrafen. In Drupal 8 konnte ich noch keine finden, die fertig ist. Also habe ich mit ein bisschen Code improvisiert:

Ich habe mit Hilfe des Moduls einen Export in Drupal 7 mit Ansichten nach CSV durchgeführt:

views_data_export

In Drupal 8 habe ich die PHP-Bibliothek verwendet:

parsecsv-for-php

Und dieser Code:

require_once('parsecsv.lib.php');
$csv = new parseCSV();
$csv->auto($filepath);
foreach ($csv->data as $key => $row) {
  $node = entity_create('node', array('type' => 'article', 'title' => $row['title'], 'uid' => $row['uid']));
  $node->langcode->value = 'en';
  $body = $row['body'];
  $body = str_replace('http://host1.com/', 'http://host2.com/', $body);
  $node->body->value = $body;
  $node->body->format = 'full_html'; 
  ...
  $node->save();
}

Der Vorteil ist, dass Sie Ihre eigenen Anpassungen vornehmen können, z. B. Pfade aus Drupal 7 ersetzen oder eine feste Sprache festlegen können. Und Sie können überprüfen, ob alle Abhängigkeiten erfüllt sind, zum Beispiel, dass die UID bereits vorhanden ist.

4k4
quelle
1

Wir wollten einige Inhaltstypen von der Migration überspringen, da Migrate-Module in D8 standardmäßig alle migrieren. Wir haben hook_migrate_prepare_row verwendet, um die Inhaltstypen in unserem benutzerdefinierten Modul zu überspringen.

function hook_migrate_prepare_row(Row $row, MigrateSourceInterface $source, MigrationInterface $migration) {
  // Ignore content types from being migrated.
  if ($migration->id() == 'd6_node_type') {
    $ignore_content_types = array('content_type1', 'content_type2');
    if (in_array($row->getSource()['type'], $ignore_content_types)) {
      return FALSE;
    }
  }

  // Ignoring content of 4 content types.
  $ignore_content_types_content = array('d6_node__content_type1', 'd6_node__content_type2');
  if (in_array($migration->id(), $ignore_content_types_content)) {
    return FALSE;
  }
}

Mehr Info. - https://www.drupal.org/node/2641912

Sie erhalten die Liste der Migrations-IDs mit dem Befehl drush migrate-status und überspringen sie nach Bedarf.

amitgoyal
quelle