すべてのイベントと各イベントにサインアップしたユーザーを表示するビューを作成する

drupal.stackexchange https://drupal.stackexchange.com/questions/1749

  •  16-10-2019
  •  | 
  •  

質問

私はを使用しています サインアップ モジュールと、各イベントにサインアップしたユーザーのすべてのイベントとアバター(デフォルトのDrupalユーザー画像フィールド)を表示するビューを作成しようとしています。

これが私が達成しようとしていることのモックアップです。私はこれまでのところアバター以外のすべてを持っています。

モックアップを表示します

私がこれまでに持っているビューのエクスポートをご覧ください

役に立ちましたか?

解決

このようなことをすることは、そのような意見を制限に押し進めることです。多くのデータを引き込み、ノードIDでグループ化したいと考えています。ビューインターフェイスを通じてこれがすべて可能かどうかはわかりませんが、ビューを実行しているエンジンで可能になると思います。

このかなり複雑なビューを達成しようとする代わりに、それが何かになるかもしれませんが、それは変更するのが難しいので、より多くのよりシンプルなクエリを使用して非常に簡単に行うことができます。このような単純な解決策は次のようになります:

  1. サインアップを除くすべての情報を表示するシンプルなビューを作成できます。 (ノードタイトルなど)
  2. サインアップにはすでにビューがあり、イベントにサインアップした人々が表示されます。少し変更すると、イベントにサインアップしたユーザーのアバターを表示させることができます。次に、このビューを、ステップ1で作成したビュー用のテンプレートおよび/またはテンプレートのいずれかに埋め込むことができます。
  3. あなたは終わった。

理想 これはすべてを1つのビューで作成することですが、場合によっては、コストが利益と比較されるものを考える必要があります。サインアップ付きのノードの場合は何百もの場合、パフォーマンスの違いを測定できるとは思いません。しかし、あなたがこの方法でそれをする時間はかなり多くです。

これはビュー自体でも同じですが、非効率的ですが、重要なものはありません(ほとんどのサイトでは)。クエリ、テーマ機能などをコードする必要なく、多くの時間を節約することができます。

アップデート:

引数(ノードIDなど)でビューを埋め込むのは非常に簡単です。

$html = views_embed_view($name, $display_id, $arguments)

またはあなたの場合

$html = views_embed_view('signup_user_list', 'default', array('nid' => $nid));

他のヒント

「イベント」という名前の「グループ」を作成します。すべてのOGモジュールをインストールする必要はありません。ほんの数個です。グループコンテンツタイプを作成する必要はありません。単に「イベント」が必要です。
人々はイベントを作成し、イベントに参加します。グループデフォルトの権限に移動し、購読せずに人々がイベントに参加できるようにすることにより、グループを公開します。

「文字列置換」モジュールを使用して、一部の言語を好みに合わせて簡単にカスタマイズするか、グループテーマ機能をオーバーライドすることをお勧めします。 「文字列置換」はシンプルで高速ですが、少し普遍的すぎる可能性があります(それはあなた次第です)。どちらも、参加の言語をあなたが望むようにするのに役立ちます。テンプレートのオーバーライドを使用すると、ユーザーインターフェイスに追加の変更を加えることができます。

ビューとカスタムTemplate.tpl.phpを使用してください!終わり!その高速で軽量で簡単です。ユーザーは「グループ」に参加していることを決して知りません。得た結果は、必要なものと正確に一致します。やさしい!

コンテンツタイプがまだ含まれていない場合は、コンテンツタイプにユーザーの参照を追加し、ビューに関係を備えています。

ライセンス: CC-BY-SA帰属
所属していません drupal.stackexchange
scroll top