web-dev-qa-db-ja.com

コンテンツなしでウェブサイトのクローンを作成する方法

自分のウェブサイトのクローンを作成する必要があります。それは同じです(モジュール、ビュー、コンテンツタイプ、テンプレートなど)。すべてを対処してから、コンテンツとユーザーを削除することで、すでに1回実行しました。正しい方法はありますか? Webサイトを3〜4部コピーする必要があります。これらのコピーを実行するのに役立つモジュール(バックアップと移行の一部)はありますか?一種の「配布」有効化モジュールを作成し、マスターのものと同様のコンテンツタイプを最初から作成してから、データベースをエクスポートする必要がありますか?

いつものように(コンテンツとユーザーを複製して削除する)場合、コンテンツIDをリセットするにはどうすればよいですか?

前もって感謝します

4
Tyler Durden

あなたが探しているのは機能モジュール http://drupal.org/project/features でしょう。ウェブサイトのクローンを作成する場合、明らかにすべてのコード/テーマ/モジュールをコピーするのは簡単ですが、すべてのノードタイプ、フィールド、ビューなどを取得する唯一の方法はデータベース内にあります。

機能は、他のすべてのモジュールと一緒に新しいサイトにこれをコピーして有効化し、すべてのビューのコンテンツタイプなどを表示できるため、このすべての情報をモジュールとしてエクスポートします。機能では、依存関係としてモジュールを一覧表示できるため、有効化するときに必要なすべてのcontrib/coreモジュールの機能も有効になります(もちろん、新しい領域に存在する必要があります)。

それはほとんどの大きなcontribモジュールと完全に統合します、そして私が理解しているものから正確にあなたのあとのものです。最初は気が遠くなるかもしれませんが、本当に非常に使いやすいので心配しないでください。次のビデオはdrupal 6のビデオですが、機能のインターフェイスは同じです(私が覚えている限り)) http://mustardseedmedia.com/podcast/episode4

Drushを使用してビルドスクリプトを作成した後、他にもっと複雑な方法があります。drush、ビルドスクリプト、および機能を組み合わせることができます。ただし、通常の機能だけで十分だと思います。

4
cconolly

これはあなたの質問に完全に答えるつもりはありませんが、少し役立つかもしれません。システム内のすべてのユーザーとノードをクリアし、テーブルの自動インクリメントをリセットするコード:

$uids = db_query('SELECT uid FROM {users} WHERE uid > 1')->fetchCol();
user_delete_multiple($uids);
db_query('ALTER TABLE {users} AUTO_INCREMENT = 2');

$nids = db_query('SELECT nid FROM {node}')->fetchCol();
node_delete_multiple($nids);
db_query('ALTER TABLE {node} AUTO_INCREMENT = 1');

上記の実行には時間がかかる可能性があり、最大実行時間を超える可能性があるため、注意して実行する必要があります。ただし、これをバッチに分割することもできます(このルートを使用する場合は、おそらく別の質問に値するでしょう)。

このように処理することの利点は、エンティティが削除されると、すべてのモジュール(少なくとも適切に動作するモジュール)が残留フィールド/カスタムデータをクリアするため、dbに停滞したデータがないことです。

1
Clive

サイト全体を複製し、コンテンツインターフェイスからすべてのコンテンツを削除できませんか?

これを複数回行う場合は、 インストールプロファイルを作成する を実行する価値があります。

0
beth