既存のフィールドを使用する適切な方法は何ですか?


13

私はDrupalの初心者です。コンテンツタイプにフィールドを追加することについて少し混乱しています。

ケース1: 3つのコンテンツタイプBookArticle&があるとしWhite Paperます。Authorsすべての著者のリストを含む語彙を作成しました。

  1. ここで、各コンテンツタイプに「作成者」フィールド(作成者への用語参照)を作成するか、1つのコンテンツタイプにフィールドを作成して他のコンテンツタイプで使用する必要がありますか?

  2. どちらの方法の利点/欠点は何ですか?

  3. 1つのコンテンツタイプから再利用フィールドを削除するとどうなりますか?他のすべてで削除されますか?

ケース2:次のコンテンツタイプを使用しました:(指定されたフィールド要件を使用)

+--------------+----------------------+
| Content Type | Field Required       |
+--------------+----------------------+
| Book         | Year of publication  |
+--------------+----------------------+
| Presentation | Date of Presentation |
+--------------+----------------------+
| Article      | Date of Publication  |
+--------------+----------------------+
| Event        | Held On              |
+--------------+----------------------+

私は何をすべきか?1つのコンテンツタイプに対して単一のフィールドを作成し、それを他のすべてのコンテンツタイプに使用するか、各コンテンツタイプに対してフィールドを作成する必要がありますか?

既存のフィールドを適切に再利用する時期と方法を明確に理解してください。

回答:


8

各コンテンツタイプに「Written by」フィールド(作成者への用語参照)を作成するか、1つのコンテンツタイプにフィールドを作成して他のコンテンツタイプで使用する必要がありますか?

異なるコンテンツタイプについて同じ情報を収集する必要がある場合は、単一のフィールドを使用する必要があります。あなたの「Written by」フィールドはそのための完璧なケースのように聞こえます。著者に異なる語彙、たとえば「本の著者」、「記事の著者」などがある場合は、それぞれに別々のフィールドを使用する必要があります。

どちらの方法の利点/欠点は何ですか?

1つの利点は、1つのフィールドですべてのコンテンツタイプを照会できることです。したがって、1人の著者が作成したすべてのコンテンツ、またはすべての作成者が作成したすべてのコンテンツを表示したい場合は、そのためのビューを簡単に作成できます。しかし、それは明らかに必要な場合にのみ役立ちます。主なポイントは、フィールド自体のユースケースが実際にどちらの方法の相対的な長所/短所を決定するかだと思います。

また、フィールドを作成するときは常に、2つのデータベーステーブル(現在のデータ用に1つ、改訂データ用に1つ)を作成します。このストレージの方法がパフォーマンスの観点から最良のアイデアであるかどうかについて「混合」の感情があり、一部の人々はテーブルの数を抑えることを好みます。既存のフィールドを別のコンテンツタイプにアタッチすると、それらすべてに同じデータベーステーブルが使用されるため、そのボックスにチェックが入ります。ただし、これもデータを分離できる場合にのみ意味があります。

1つのコンテンツタイプから再利用フィールドを削除するとどうなりますか?他のすべてで削除されますか?

フィールドは、すべてのコンテンツタイプから切り離されると削除されます。フィールドをデタッチしたコンテンツタイプに属するデータは、削除されたデータテーブルに移動され、cronの実行中に削除されます。

ケース2では、これを自問してみてください...

同じフィールドの各コンテンツタイプのインスタンスに異なるラベルを付けることができることに注意してください。これにより、データの違いを知るための十分な視覚的(またはデータ主導の)キューが得られますか?

その場合は、単一の日付フィールドを使用して、上記の利点を活用してください。そうでない場合は、別個のフィールドを持つことは、データ設計にとってより意味があります。

それはすべてあなたの特定のウェブサイトに適切なものに帰着しますが、うまくいけば、上記があなたにある種の道を与えることになるでしょう。


私はこれを理解していませんでしたKeeping in mind that you can have different labels for each content type's instance of the same field, will that give you enough of a visual (or data-led) cue to let you know the differences between the data?

4
データの処理方法に基づいて選択するのはユーザー次第です。例として公開日とプレゼンテーション日を取り上げますが、それらが分離されているかどうかは重要ですか?その日付に基づいてコンテンツをフィルタリングする必要がありますか?単一のフィールドを使用し、そのフィールドでフィルタリングするときにすべてのコンテンツタイプのデータを取得すると、望ましくない結果が得られますか?これらは、自分自身に問うべき一種の質問です。これは本当にデータ設計の問題であり、Drupalのエンティティ/フィールドシステムは単なる抽象化レイヤーです。これをDrupalの外部で設計する場合、そのデータを同じテーブルに入れますか?
クライブ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.