Entityの使い方について

カテゴリ サイトの構築 コアバージョン 7.34 関連モジュール ECK

カンファレンスの管理をDrupalでやろうとおもっているのですが、CustomNode+FiledCollection以外のやり方で構築しようと考えております。
そこでEntityの使用を考えているのですが、下記の実装は可能なのでしょうか?
まずEntity type = Eventを作ります。
そのEntity = EventのBundlesとして、AgendaやSpeakerやSponsorを追加しようとおもっております。
今現在でEntityのEvent、BundlesのAgendaなどはできたのですが、Event ID = 1に has_many でAgendasやSpeakersを持たせるRelationshipsの持たせ方がわかりません。そもそもEntityとBundleの使い方を勘違いしているのでしょうか?

ちなみに、EntityやBundleはこちらで作成しております。
https://www.drupal.org/project/eck

ご教授いただければ幸いです。

Ayumi

コメント

ユーザー actbrain の写真

■ Entity typeとBundleについて
 
まず、基本となる「Entity type」と「Bundle」について、ですが、こちら、Drupalインストール直後の”標準”状態で、代表的なものとして、
 
・Entity type = node,user, taxonomy, comment, fileなどが用意されています。
・Bundle = article(記事), page(基本ページ)が用意されています。・・・Entity type=nodeの場合
 管理 › サイト構築 › コンテンツタイプ ページで一覧される「コンテンツタイプ」=「Entity=node」以下の「Bundle」に相当します。
 
■ 独自Entityについて(eckモジュールを利用して独自Entityを作成する)
 
上記Entity「node, taxonomy」やBundle「article, page」は標準ですが、
・不要な機能が入っているため、動作が重い・・・スリムなEntityを独自で定義したい。
・既存(node)の仕組みに縛られたくない・・・独自Entityを創ろう。
・〜
などの理由で独自のEntityを設計します。
※ PHPプログラマー(開発者)向き。
 
■ カンファレンスに限らず、Drupalで情報Referenceする場合の”モジュール的”アプローチ
(難易度が低い順に挙げてみました)
 
1.メインEntity=nodeを利用し、要ReferenceなフィールドにTaxonomyを用いる。
2.メインEntity=nodeを利用し、要Referenceなフィールドに「Entity Reference」モジュール等を用い、外部「node」にReferenceする。
3.メインEntity=nodeを利用し、要Referenceなフィールドに「Field Collection」を用いる。
4.メインEntity=nodeを利用し、要Referenceなフィールドに「独自Entity」を作成しReferenceする。
5.メインEntityから「独自Entity」を作成し、要Referenceなフィールドに「独自Entity」または「node」をReferenceする。
 
※ 機能的には、1〜2.で不足は無いと思います。
※ Drupal6で可能であった「Field group」(複数のフィールドをグループ化し、無制限組の入力を行う)と同様の機能を必要とする時は3.を検討します・・・パフォーマンス的にイマイチですが。
※ 4〜5.は上級者用であるため、アドバイスとしてはお勧めできません。
 
カンファレンスといっても実現したい内容は様々あると思うので、一般的な回答になってしまいましたが、独自Entityを構築するのは色々な面でDrupalの深部の知識が必要です。確証を得るにはCoreを始めEntity,Eckなど関連モジュールのソースコードを読む必要があります。
 
EntityとBundleの使い方?と仰っておりまので、Databaseの中を見たり、デバッグしたりのご経験はないと思います。
従って「eck」はお勧めできません。
上記1〜2.をお勧めします。標準の範疇ですのでヘルパーモジュールも多く、困ったときのQ/Aも多いです。

ユーザー Sazae の写真

ご丁寧なご返信ありがとうございます。

はじめは3のCustomType + Filed Collectionで考えておりました。
ですがFiled Collection部に項目が増えすぎるとAdminページの動作に問題(AjaxErrorなど)がある経験があったので、Entityの導入を考えております。
1は、Taxonomyを使って、Speakerや、Agendaなどの細かい情報(Title, Desc,Photo,Link)が持たすことができないので、諦めておりましたが、可能なのでしょうか?
2は、Speakerなどを別途Custom Content Typeを作ってEntity Referenceを使って使用も考えておりますが、AgendaはどちらかといとFiledCollection向きかなと思っております。

いただきました回答を元に今考えているのは、4のCustom Content TypeでEvent作成して、Agenda,SpeakerをCustom Entityで作成か、3のFiled Collectionで考えております。
Filed Collectionでデータを作成した場合、EventのAdmin詳細ページからでなく、別ページを開いて、特定のEventのField Collection(例えばAgenda)だけを編集することはできるのでしょうか?

Drupalはまだ使いだして浅いですが、普段はPHPやObject-c,ruby,.NETなどいろいろな言語での開発は行っておりますので、backendの作業は可能です。

ページ

OTHER FAQ

Drupal開発・運用の疑問/質問の答えはここに

無料ユーザー登録すると質問できます。

カテゴリ Core Ver. 関連モジュール降順で並び替える タイトル
フォーム 8.6.x JavaScript 特定のformにJavaScriptを紐付ける方法
フォーム 8.6.x JavaScript 特定のformに動的にJavaScriptをロードする方法
GoogleMaps 7.28 Javascript IE9でGoogle Map APIを利用した住所情報所得がうまくゆかない
見栄え 7.15 js Injector 簡単にJavascriptを追加する方法は?
コンテンツの作成 8.4x json jQueryにjsonで渡す方法
言語 7.15 Language まだ翻訳されていない英語文、どうにかならない?
Libraries 8.5.x Libraries Commerceで外部JavaScriptをテスト/本番で読み分ける方法
PhpStorm 7.50 LocalForward PhpStormから踏み台を使う
排他 7.26 lock Viewsモジュールの設定ページのような排他機能
mac linux ファイル名 文字化け 8.7.x mac linux ファイル名 文字化け Macからlinuxにrsyncするとファイル名(濁点)が文字化けする場合の対応方法
開発 mail 7.50 Mail Safety 開発/テスト用サイトのメール
コンテンツの作成 7.15 Mailhandler メールを通じてnodeの投稿をするには
コンテンツの作成 7.23 maxlength テキストフィールドの最大長のチェック&カウントダウン
アップデート 8.7.2 menu drupal-core 8.7.2にupdateしたところ
サイトの構築 7.50 Module Missing Message Fixer モジュールをアンインストールしたらエラーがでるようになった
リバースプロキシ 8.9.x mod_proxy mod_proxy_http mod_ssl Apache2.4 から httpsサーバーへリバースプロキシする方法
コンテンツの作成 8.4x node 新規ノードを作成する
コンテンツの作成 8.4x node node保存前に色々やる方法
コンテンツの作成 7.38 node 代理投稿を可能にしたい
コンテンツの作成 8.9.x node ノード保存時の前回値の参照方法

ページ