一度に複数のコンテンツタイプにフィールドを追加しますか?


9

一度に複数のコンテンツタイプにフィールドを追加し、すべてのコンテンツタイプに対しても同時に設定したいと考えています。

理由は、私には多くのコンテンツタイプがあり、それぞれにこの新しいフィールドを追加することによってすべて更新する必要があるということです。このフィールドは、すべてのコンテンツタイプでも同じように構成されます。フィールドを追加したいすべてのコンテンツタイプを追加してから構成するこのプロセスを繰り返す必要があり、しばらくすると手間がかかります。

多くのコンテンツタイプに新しいフィールドを大量に追加/構成する方法はありますか?


コンテンツタイプはいくつありますか?
bobylapointe 2013年

この質問はOPには関係ありませんが、報奨金を設定したNigel Watersに関係があると思います。ナイジェルはコメントしてもいいですか?
KariKääriäinen2013年

25あります(非常に大規模なサイトであり、個別のコンテンツタイプである必要があります)。
Nigel Waters

ところで、別の解決策は、この種のもののために安い人を雇うことです:)
donquixote

またはブラウザマクロ?
donquixote 2013年

回答:


9

機能モジュールを使用する広範な行は次のようになります。

  1. フィールドを2つの(パターンを表示する)コンテンツタイプに手動で追加する
  2. 新しく作成したフィールドのフィールドベースとフィールドインスタンスを含むフィーチャーを作成します
  3. 作成したモジュールを編集して、フィールドベースとインスタンスを必要なすべてのコンテンツタイプに乗算します
  4. 編集したモジュールを有効にする

機能がフィールドをどのように処理するかを覚えていません。フィールドが作成された後で機能を無効にすることはできますか?
ドンキホーテ2013年

生まれたばかりのモジュールは機能に依存するため、私が知る限り、基本的には機能に依存しません。
KariKääriäinen2013年

つまり、機能を無効にするのではなく、新生モジュールを無効にします。問題は、フィールドインスタンスがまだ存在するかどうかです。たぶん、レスター・ピーボディかナイジェル・ウォーターズがこれを試して、報告を返すことができるでしょう。
ドンキホーテ2013年

あ、ごめんなさい。はい、実際には両方を無効にすることができます。フィールドはデータベース内に存在します。今、自分でテストしているので。
KariKääriäinen2013年

これは、デフォルトのdrupalセットアップと他のほとんどのdrupalセットアップの正しい答えです。ただし、コンテンツタイプごとに異なる表示モードを使用できる場合は、各コンテンツタイプのフィールドを手動で構成するか、field_instance配列コードで正しい表示タイプを使用することをお勧めします。
Sumeet Pareek、2015年

5

フィールドツールモジュールを使用します。

フィールドを操作するための便利なUIツールのコレクション:

Overview of fields with links to edit single instances, and all instances at once
Clone any field instance to multiple entities and bundles
Clone all field instance of a bundle to multiple entities and bundles
Import and export fields
Delete multiple instances of a field
Apply a vocabulary to multiple entities and bundles at once (the same way vocabularies were applied to content types on Drupal 6)
... your idea here. Patches welcome!

これはすごくいいですね。これを見てみます。
レスターピーボディ

3

このためのカスタムモジュールを作成してもかまわない場合は、コードを使用してフィールドをコンテンツタイプに追加するのは比較的簡単です。
$instance = array(
'field_name' => 'field_firstname',
'label' => 'First name',
'entity_type' => 'node',
'bundle' => 'person',
);
field_create_instance($instance);

上記のコードは、フィールド「field_firstname」をマシン名「person」でコンテンツタイプに追加します。したがって、フィールドといくつかのコンテンツタイプを選択できるフォームを作成し、送信時にフィールドが選択されたすべてのコンテンツタイプに追加されるモジュールを作成できます。


1

私がこれをしなければならなかった数回は、フィールドコレクションを使用しました。

任意の数のフィールドをアタッチできるフィールドコレクションフィールドを提供します。

ただし、すべてのコンテンツタイプにフィールドコレクションフィールドを追加する必要があるため、これはまだかなり困難です。つまり、複数のコンテンツタイプに5つまたは6つのフィールドを追加する場合は、フィールドコレクションで最初の5つまたは6つのフィールドを一度構成するだけで済みます。

その後field_collection_field、コンテンツタイプの1つにフィールドコレクションフィールドを作成し(引数のためにそれをと呼びます)、他のすべてのタイプで同じフィールドを再利用します。

先ほど述べたように、x個のコンテンツタイプで1つのフィールドを構成する必要があります。


ああ。私もあなたの質問を再読しましたが、必要なフィールドは1つだけです。時間を無駄にして申し訳ありません> _ <
Chapabu

つまり、この1つのフィールドをフィールドコレクションに入れて、必要に応じて構成し、構成済みのフィールドでフィールドコレクションを参照することができます。ただし、これは少しやりすぎです。
Chapabu

チャパブに問題ありません。これは、今後このようなことを行う必要がある場合に備えて、今後も役立つ情報です。
レスターピーボディ

1

データベースを直接操作することに慣れている場合、フィールドインスタンスは{field_config_instance}テーブルに格納されます。1つのコンテンツタイプのフィールドを追加/設定してから、データベーステーブルでレコードを検索して複製できます。

複製された行の2つの列の値を変更する必要があります。

  • id:テーブルに一意の新しい整数である必要があります
  • bundle:新しいコンテンツタイプのマシン名である必要があります
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.