web-dev-qa-db-ja.com

移行中にnidを保持するにはどうすればよいですか?

1つのDrupal 7インストールから別のインストールにノードをインポートするために、migrate/migrate_d2dを使用して移行を書いています。

現在、example.com/node/[nid] URLを使用する記事を指すリンクがWeb上に多数あります。インポート先のサイトは最終的に現在のサイトに置き換わるので、これらのリンクが依然として正しい記事を指していることを確認する必要があります。

/ node/[nid]を使用する古いリンクが正しい記事を指すように、移行中にnidを保持するにはどうすればよいですか?

または、古いnidへの500,000以上のURLを新しく移行された対応するURLに簡単にリダイレクトするにはどうすればよいですか?

3
amacrobert

これは実際には簡単です。ノード移行クラスのprepare()関数で、nidとis_newをtrueに設定するだけです。

public function prepare($node, $row) {
  // Preserve old nid so that old links to nodes using /node/nid still work
  $node->is_new = TRUE;
  $node->nid = $row->nid;
}
4
amacrobert

うーん...このテーマに関する私の限られた知識では、最初の本能は、URLリダイレクトモジュールを使用して古いURLを新しいURLにマッピングすることです。そのため、Drupalの自動ノードID割り当てを曲げるのではなく、古いものを新しいものにマッピングします。あなたがmigrate_d2dをマスターできたなら、それを十分に簡単に行うことができるはずです!

2
stevepurkiss