Drupal 8移行:コンテンツ転送への深い潜水
移行モジュールは、Drupalエコシステムの基礎であるため、Core Drupal 8はその機能の一部を統合しました。 これは、従来のアップグレードをDrupal 6および7からDrupal 8へのコンテンツと構成の移行に置き換えるために重要でした。一方、Coreには基本的なフレームワーク(migrate
モジュール)とDrupal 6/7アップグレードツール(migrate_drupal
)が含まれています。多くの重要な機能は、寄与したモジュールに残っています。 Migrate Tools
は特に重要であり、移行を管理するためのDrushコマンドとユーザーインターフェイスを提供します。 さらに、Migrate Source CSV
、Migrate Source XML
、Migrate Source JSON
などのモジュールは、一般的なデータソース用のプラグインを提供します。
この記事では、コンテンツをノードエンティティにインポートすることにより、Drupal 8の移行を示しています。簡単にするために、Drupalインストール内のデータベーステーブルを使用します。 完全なコードは[このリポジトリ](link_to_repository_here-利用可能な場合は実際のリンクに置き換えます)で利用できます。
重要な概念:
DRUPAL 8移動は、
ソースMigrate Tools
移行アーキテクチャ:drush migrate-import --all
drush migrate-rollback --all
例:ムービーの移行
私たちの例には、2つのデータベーステーブルが含まれます。 次のMySQLスクリプトでこれらのテーブルを作成し、サンプルデータを入力します。目標は、映画を記事ノードとジャンルに分類用語に移行することです(タグ語彙)。
ジャンルの移行():
movies
movies_genres
CREATE TABLE `movies` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `description` text, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; CREATE TABLE `movies_genres` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `movie_id` int(11) DEFAULT NULL, `name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; INSERT INTO `movies` (`id`, `name`, `description`) VALUES (1, 'Big Lebowsky', 'My favorite movie, hands down.'), (2, 'Pulp fiction', 'Or this is my favorite movie?'); INSERT INTO `movies_genres` (`id`, `movie_id`, `name`) VALUES (1, 1, 'Comedy'), (2, 1, 'Noir'), (3, 2, 'Crime');
): ソースプラグインは
この例は、Drupal 8の移行機能を示しています。 さまざまなソースプラグイン、プロセスプラグイン、および多様な移行ニーズを処理するカスタムソリューションの可能性を調べてください。
(これらは、事実であり、関連性があるため、入力からほとんど変化していません。)
Drupal 8に移住するための前提条件は何ですか?
以上があなたの最初のDrupal 8移行の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。migrate.migration.genres.yml
CREATE TABLE `movies` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`description` text,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;
CREATE TABLE `movies_genres` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`movie_id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
INSERT INTO `movies` (`id`, `name`, `description`) VALUES
(1, 'Big Lebowsky', 'My favorite movie, hands down.'),
(2, 'Pulp fiction', 'Or this is my favorite movie?');
INSERT INTO `movies_genres` (`id`, `movie_id`, `name`) VALUES
(1, 1, 'Comedy'),
(2, 1, 'Noir'),
(3, 2, 'Crime');
Movies.php
を使用して、ジャンルIDを含む「ジャンル」フィールドを追加します。
prepareRow()
Migrate Tools
drushコマンド(migrate-status
)を使用します
migrate-import --all
migrate-rollback --all
移行のためにDrupal 8サイトを準備するにはどうすればよいですか?