コンテンツタイプをコピーする方法


回答:


13

重複してエクスポートする場合は、機能モジュールを使用します

機能モジュールは、Drupalの機能のキャプチャと管理を可能にします。機能とは、特定のユースケースを満たすDrupalエンティティのコレクションです。

機能は、エクスポート可能なモジュールからさまざまなサイト構築コンポーネントを取得し、それらを単一の機能モジュールにまとめるためのUIとAPIを提供します。機能モジュールは、他のDrupalモジュールと同様ですが、コンポーネント(ビュー、コンテキスト、CCKフィールドなど)を.infoファイルで宣言し、プログラムでチェック、更新、または元に戻すことができる点が異なります。


1
これは現時点で最良の方法のようです。残念ながら、Drupal 6にはコンテンツコピーのような(まだ?)モジュールはありません。
marcvangend

エクスポートしてからインポートする必要がありますか?
ラプター

2
機能は、コンテンツタイプをコピーするには過剰です。高度にカスタマイズされた目的のために、さまざまなエンティティ/モジュール/その他を一緒にバンドルすることを目的としています。コンテンツタイプの単純なコピーが必要な場合は、以下の@ user3936を参照してください。
doub1ejack

Bundles Inheritモジュールが最も簡単であることがわかりました。私の答えを参照以下を
マットブラウン

19

バンドルコピーモジュールを使用するには遅すぎるかもしれません:

バンドルコピーは、Drupal 6のCCKプロジェクトに存在するコンテンツコピーモジュールに代わるものです。ノードタイプ、分類、ユーザー、フィールドAPIフィールド、フィールドグループのエクスポート/インポートをサポートしています。

更新 7.x-2.x-devノート

次の機能が追加されました。

  • フィールドコレクションのエクスポート/インポート
  • コンテンツタイプのクローニング
  • Commerce Entityバンドルのエクスポート/インポート

Drupal 8:Bundle CopyはDrupal 8 Core CMIにあります。


1
バンドルコピーは、コンテンツタイプを同じサイトの別のコンテンツタイプに複製するのには適していません。また、検索/置換の実行は簡単ではありません。他のコンテンツタイプを参照するノード配列があります。よくわかりませんでしたが、熱心に尋ねました。何が安全で、何が安全ではないかを知っていれば、それは役に立ちます。ただの警告。(この同じ要求に応答する1人のユーザーは、元のコンテンツタイプマシン名のすべてのインスタンスの検索/置換を行うと、db破損エラーが発生したことに

@ user7558 バンドルコピーは、コンテンツタイプを同じサイトの別のコンテンツタイプに複製するのには適していません。はい、それはあなただけ手動での介入の最小のビットを必要とする、である
クライヴ

彼らは「同じサイトでコンテンツタイプを複製しますか?」の問題です。drupal.org/node/1589118
gagarine

1
7.x-2.x-devは、UIを介した同じサイトでのコンテンツタイプのクローン作成をサポートしています。
mpdonadio

フィーチャーアプローチを使用すると、マシンで生成されたコードを手動で編集して、フィーチャーで生成されたコンテンツタイプコードを検索/置換/名前変更するため、バンドルコピーがお気に入りのオプションだと思います。Featureモジュールのコードと、このコードの生成方法を十分に理解していない限り、この方法でのハンドコーディングと不運な結果について不明な点や仮定がある可能性があります。'14コメント1 2の10月1日に更新しました
therobyouknow

14

フィールドツールモジュールを使用しましたが、問題なく機能しました。

2番目のコンテンツタイプを作成し、このモジュール機能を使用してすべてのフィールドを新しいコンテンツタイプに複製し、モジュールをアンインストールするだけでした。バンドルコピー機能は、コンテンツタイプを複製するばかげた方法のように見えます。これは非常にシンプルで、まさに私が望んでいたものです。


複雑なカスタムコンテンツタイプを複製するだけの場合は、これが最適な方法です。機能には多くの不要なオーバーヘッドがあり、コンテンツタイプは生成されたモジュールに関連付けられています。ブレー。これを使って。インストール/有効化、クローンを作成するコンテンツタイプに移動し、Clone Fields上部のタブを探し、コピーするフィールド、それらをコピーするノードを選択して完了です。
doub1ejack

1
フィールドツールは最も速くて簡単な方法だと思います。ありがとうございました!
ロジャー

新しい空のコンテンツタイプToolsタブを作成Clone fields to this bundleし、既存のノードコンテンツタイプからフィールドを選択しますAdd field instances
ヒューゴ

4

(比較的新しい)Bundle Inheritモジュールがこれを行う非常に簡単な方法であることがわかりました。bundle_inheritモジュールに加えて「Bundle Inheritance Node」(bundle_inherit_node)モジュールを有効にしてください。そうすると、新しいコンテンツタイプを作成するときに新しい「Inheritance」タブが表示されます。

(また、「ソフト継承」と「厳密継承」の選択も可能です...私が収集できる限り、「ソフト継承」はフィールドの1回限りのコピーを行いますが、「厳密継承」は継承階層。)


4

最も簡単な方法はBundle Copyを使用することです-7.2バージョンは開発中ですが、私にとっては完璧に機能しました。

モジュールをインストールした後、「コンテンツタイプ」ページに移動し、新しい「クローン」タブをクリックします。

[ソースバンドル]で、複製するコンテンツタイプを選択します。

[新しいバンドル名]に、作成する新しいコンテンツタイプの名前を入力します。[クローン]をクリックすると、リストに新しいコンテンツタイプが表示されます。

フィールドツールも仕事をしますが、それほど簡単ではありません。



1

それ以外の場合、Content Type Cloneを使用すると、PHPコードを調べたり、複雑な操作を実行したりすることなく、すばやく簡単に実行できます。

https://www.drupal.org/sandbox/davidfiaty/2745827

現時点ではサンドボックスプロジェクトですが、すぐに公式のDrupalモジュールとして利用できるようになります。

編集:Drupal 7のコンテンツタイプクローンの公式リリースはこちら! https://www.drupal.org/project/content_type_clone Drupal 8バージョンは近日公開予定です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.