web-dev-qa-db-ja.com

「コンテンツタイプA」内から「コンテンツタイプB」を追加して、両方を一緒に表示する方法

次のシナリオがあります。

コンテンツタイプA
コンテンツタイプB

コンテンツタイプAは、管理者ロールによって追加されます。
コンテンツタイプBは、生徒の役割によって追加されます。

コンテンツタイプAが作成されたら、node/20やcontent-type-A/20などのリンクで、コンテンツタイプBのノード追加フォームを探しています。

次に、このフォームから追加されたコンテンツタイプBを、コンテンツタイプAの既存のコンテンツと関連付けて表示する必要があります。

例えば、
コンテンツタイプA:タイトル:パンは良い

したがって、node/20に移動すると、タイトルが表示されます。
次に、ここにコンテンツタイプBのフォームがあり、フィールドにはタイトルといくつかのラジオボタンがあります。学生役割ユーザーはフォームを入力して送信します。

これで、ノード/ 20にTitle:bread is goodと、学生が入力したコンテンツタイプBに関連付けられたフィールドが表示されます。

そして、より多くの学生がこれに追加し続けることができるはずです。これは、1対多の関係のようなものです。コンテンツタイプAには、多くのコンテンツタイプBが関連付けられています。

誰かが私にこれを行う方法を説明するのを手伝ってくれることを願っています

4
user2782792

問題の最初の部分には、コンテンツタイプ間の関係を作成するために エンティティ参照 を使用できます。

任意のエンティティを参照できるフィールドタイプを提供します。

  • 一般的なエンティティ参照フィールド
  • 4つのウィジェット:
    • オプションモジュールの上に実装された2つ(選択とラジオ/チェックボックス)、
    • 2つのオートコンプリートウィジェット(1つのエントリに1つのテキストフィールドがあり、同じテキストフィールドにカンマ区切りのエントリがある1つのタグスタイル)

2番目の部分の場合、あるコンテンツタイプフォームが別のコンテンツタイプフォーム内にあり、次のモジュールがあります。

インラインエンティティフォーム モジュール:

参照エンティティのインライン管理(作成、変更、削除)のためのウィジェットを提供します。主な使用例は、親->子(製品の表示->製品、注文->広告申込情報など)で、子エンティティが親フォームの外部で管理されることはありません。既存のエンティティも参照できます。

エンティティ参照の自動作成

EntityReferenceを介してノードを参照するために、その場でノードを発明するための意図的にシンプルな方法。

参照ダイアログ (ベータ2リリースのみ)

このモジュールは、ダイアログを介して参照を追加、編集、検索するためのリンクを追加することにより、ユーザーおよびノー​​ド参照フィールドのような参照フィールドを拡張します。

Autocreate Node Reference

Autocreate Node Referenceは、ノード参照フィールドを追加し、テンプレートノードを複製することにより、参照されたノードを自動的に作成します。

ノード参照作成

ノード参照作成は、ユーザーが存在しないノードを参照できるようにするノード参照オートコンプリートウィジェットの拡張機能です。

エンティティ接続 (rc5リリースのみ)

エンティティ参照フィールドで新しいエンティティを作成したり、リンクされたエンティティを編集したりするためのユーザーエクスペリエンスを改善するのに役立ちます。

「新規追加」ボタンを使用すると、新しいエンティティを追加/作成できます。最初のフォームがキャッシュされ、新しいフォームが生成されます。新しいフォームが完成して保存されると、ユーザーは元のフォームに戻ります。

重要:最も使用されるモジュールは インラインエンティティフォーム ですが、 Automatic Nodetitles モジュールでは機能しませんが、- Entity connect が適切に機能することは知っています。さらに Entity connect を使用すると、既存のエンティティを編集できます。私の場合、私は Entity connect を好みます。

3番目の部分では、別のエンティティ内の1つのエンティティ(または複数のエンティティ)の視覚化 EVA:Entity Views Attachment モジュール、非常に使いやすいです。

「Eva」は「Entity Views Attachment」の略です。これは、ビューの出力を任意のDrupalエンティティのコンテンツに添付できるようにするビュー表示プラグインを提供します。ノードまたはコメントの本文、ユーザーアカウントのプロファイル、または分類用語のリストページは、すべてエンティティコンテンツの例です。

これが見えるはずだと思います: Drupal 7 Node Reference Tutorial

3

タイプAの参照フィールドで インラインエンティティフォーム を使用して、タイプBノードを表示中に追加できるようにし、 フィールドのアクセス許可 などのアクセス制御を組み合わせることができます。 (私が間違っていない場合は、編集時だけでなく、親ノードを表示しながらインラインノードフォームを表示できるはずです。)

レイアウトの柔軟性を高めるために、 Display Suite および関連モジュールもお勧めします。

2
TwoD

コンテンツタイプAが作成されたら、node/20やcontent-type-A/20などのリンクで、コンテンツタイプBのノード追加フォームを探しています。

Form Block モジュールを使用して、この部分を実現できます。

これで、ノード/ 20にTitle:breadが表示され、学生が入力したコンテンツタイプBに関連付けられたフィールドが表示されます。

コンテンツタイプAをコンテンツタイプBにリンクするには、次の2つの方法があります。

Route 1用語を含む分類用語集を作成し、税用語参照フィールドを追加する必要があります。次に、ノードAとBを編集し、同じ用語名を追加します。

OR

Route 2Entity Reference そして、エンティティ参照フィールドをコンテンツタイプBのみに追加します。次に、Bフォームが入力されたら、タイプAのノードを参照する必要があります。 <------ これに、現在使用しているコンテンツタイプAノードのNIDを自動的に入力する場合は、注意が必要な部分です。これを実現するには、jQueryまたはカスタムモジュール( hook_node_presave を使用)を使用する必要があります。残念ながら、私はD7サーバーを起動して、このソリューションをテストする時間はありません。

次に、ブロックビューを作成し、[詳細設定]でNID(コンテンツID)のコンテキストフィルターを追加し、URLからIDを提供します。

ノードの用語の関係を追加します(ルート1に進むことにした場合)

OR

参照エンティティの関係を追加します(ルート2に進むことにした場合)

最後に、コンテンツタイプAのノードにブロックビューを追加/配置します。

2
No Sssweat