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.3x Block Cache Theme 管理ページから作成したカスタムブロックを非キャッシュ化する方法
テーマ 8.3x Core Twig開発用の設定
テーマ 8.3x Contribute themes drupal8-寄贈テーマの動向
拡張機能 8.3x Contribute modules drupal8-寄贈モジュールの動向
テーマ 7.56 field レンダリング配列内に「ラベル非表示」を指定する方法
PhpStorm 7.50 LocalForward PhpStormから踏み台を使う
SSH 7.50 ProxyCommand SSH IP制限を1コマンドで通過する
Apache2.4 7.50 Apache2.4のアクセス制限
サイトの構築 7.50 Module Missing Message Fixer モジュールをアンインストールしたらエラーがでるようになった
drush 7.54 Drush Drushでdrupalサイトをインストールする方法
ユーザの管理 7.50 Paypal continued billing drupal7のPaypal継続課金モジュールについて
コンテンツの管理 7,51 Views Data Export Views Data ExportでCSVデータが欠けてしまう
アップデート 7.50 Download count DOWNLOAD MODULEページでダウンロードが失敗することがある
開発 mail 7.50 Mail Safety 開発/テスト用サイトのメール
メール 7.50 Smtp smtpでGmailアカウントを使いたい
jQuery Revolution 7.50 jQuery Revolutionのリンクがスマホで機能しない
CentOS 7.50 消せないファイルを消すには
権限 7.50 Cron Basic認証時のCron(wget)実行方法
PCRE 7.50 preg_match()がおかしい
コンテンツの作成 7.50 Inline Entity Form Drupal6のフィールドグループのようなモジュールはありませんか?

ページ