web-dev-qa-db-ja.com

OGグループのメンバーシップのみに基づいて検索結果を制限するにはどうすればよいですか?

私は Drupal 7 のビューのみを使用してカスタム検索ページを作成する方法)に関するチュートリアルに従いました。

オーガニックグループのホームページにブロックとして追加したいので、ビューでページオプションではなくブロックオプションを選択しました。

ビュー設定で関係とコンテキストフィルタリングを使用して検索を制限するには、ログインした各ユーザーがグループの公開コンテンツのみを検索できるようにする(サイト全体ではない)

EDIT:私はすでに以下を試しました:

コンテキストフィルター>(ノードからのOGメンバーシップ)OGメンバーシップ:グループIDの関係> OGメンバーシップ:ノードからのOGメンバーシップ

(私はOGグループに付属するデフォルトのog_contentビューからアイデアを得ました!)

これはフックで実行できますか?

5
testing1

可能なOG代替としてモジュールをグループ化

前の回答の下にある「私は個人的にOGは...だと思います」のような(3番目の)コメントに従って、 Group モジュールが Organic groups の可能な代替手段であることに注意してくださいDrupal 7最近のように(そしてすぐにDrupal 8も...).

Group モジュールの詳細については、「 フラグと参照を使用して基本的なOrganic Groups機能を作成する方法 に対する私の回答を参照してください。

グループ-オーガニックグループの代替 」で言及されているように、この質問に固有の グループ モジュールについての詳細:

許可システム

グループの権限はサイトビルダーによって定義され、すべてのグループインスタンスに渡されます。これは、ノードのノードタイプに相当する「グループタイプ」を設定することによって行われます。したがって、さまざまなタイプのグループに一連の権限を設定できますが、グループメンバーがそれらをいじることができることを心配する必要はありません。

グループの役割

上記の作業を行うために、Groupモジュールはグループロールと呼ばれる概念を定義します。これらはユーザーロールがグローバルに行うのとまったく同じように動作しますが、グループタイプレベルで定義できます。 Groupは、あなたの人生を楽にする3つの特別な役割を提供します。Anonymous(サイトにアカウントなし)、Outsider(サイトにアカウントですが、グループのメンバーではありません)、Member(サイトにアカウントおよびグループのメンバー)です。

したがって、上記を念頭に置いて、可能な代替手段として Group モジュールを検討する場合は、実行しようとしている検索結果を制限することは(自動的ではないにしても)はるかに簡単に思えます。

その他の構成オプションについては、構成モジュールを検索してください

別のアプローチ(おそらく Group モジュールの使用と組み合わせることができます)は Search configuration モジュールを使用することです。プロジェクトページの詳細:

このモジュールには5つの主要な機能があります。

  1. コアノード検索フォームの外観を変更します。
  2. より意味のある検索のためにコンテンツタイプをグループ化します。
  3. コンテンツタイプによって検索結果を制限します。これは役割ベースの制限です。
  4. 検索結果に個々のアイテムを表示しないように制限します。
  5. ページャー制限を変更します(ページあたりの検索項目結果の数)。

そのプロジェクトページには、このモジュールで何ができるかについての詳細が多数含まれています。

3
Pierre.Vriens

Views に不具合があるように、ここで私の回答を編集します。コンテキストフィルターや関係がない場合でも、グループの対象ユーザーと公開された検索によるフィルタリングだけでは機能しません。 SQLクエリには両方の値がありますが、SQLをデバッグするのに十分なSQLについて知りません。

  1. コンテキストフィルター>(ノードからのOGメンバーシップ)OGメンバーシップ:グループID
  2. 関係> OGメンバーシップ:ノードからのOGメンバーシップ

代わりに、検索モジュールを使用せずに機能させるハックな方法を次に示します。

  1. グループごとに結果を制限するには、上記と同じようにします。
  2. たとえば、タイトルのみで検索したい場合は、タイトルに公開されているフィルターを追加して、「次を含む」を選択します。
  3. より多くのフィールドで検索する可能性が高い場合は、検索したいフィールドを追加します(おそらく非表示にします)。 Node title/Body。次にGlobal: Combine fields filter (exposed)を作成し、「contains」を含む上記のフィールドを選択します。

これにより、どのフィールドでも検索できますが、検索モジュールほどうまくいきません。

他の誰かが露出した検索問題の解決策を持っている場合は、投稿してください。

3
Niall Murphy