私はDrupal 7で、Organic Groupsがインストールされています。ITチーム用にプライベートグループを作成しました。つまり、そのグループのメンバーだけがグループのコンテンツを見ることができます。
私が目にしている問題は、グループのコンテンツを公開するときに、非メンバーがホームページからノードリンクを表示し、コンテンツが表示されていなくてもクリックできることです。
グループコンテンツをグループメンバーだけに表示するにはどうすればよいですか? (つまり、ノード自体は非メンバーには見えません。).
投稿された質問から6か月たっても、参考になる情報を提供させてください。うまくいけば、これはDrupal module [〜#〜] og [〜#〜] で苦労している他の人にも役立つでしょう。
コンテンツタイプでは、別のフィールドとしてGroup content visibilityがすでにバンドルされている必要があります。これを実行するには、/admin/config/group/fields
に移動します。
この写真の私のライブの例として、私のContent Groupはグループコンテンツタイプであり、Content Group Submissionは、特定のグループにのみ表示されるホスティングarticlesのコンテンツタイプです。以下のように、このコンテンツタイプの新しいフィールドとしてバンドルグループコンテンツの可視性をバンドルする必要があります。
これは、独自のコンテンツタイプへの追加フィールドとしてGroup content visibilityフィールドがあることを意味します。
Groups audienceフィールドは、コンテンツ作成者に、作成しているコンテンツの対象読者を指定することを目的としています。 Group content visibilityフィールドは、コンテンツ作成者が特定のコンテンツの表示基準を指定できるようにするためのものです。これは、次の2つの図に最もよく示されています。次に、コンテンツタイプContent Group Submissionのフィールドセットを見てみましょう。私の例では、/admin/structure/types/manage/content_group_submission/fields
に行きました。
このフィールドを編集すると、デフォルトで次のオプションに制限される値が表示されます。
- None -,
Use group defaults,
Public,
accessible to all site users
およびプライベート-accessible only to group members
。
最後のものはあなたが興味を持っているもののようです。このフィールドのデフォルト値としてそれを作成する必要があります。
そのすべてを保存します。また、コンテンツ作成者にはこれらのオプションが提供されます。私の場合、/node/add/content-group-submission
にアクセスします。
そして、これはあなたのコンテンツ作成者があなたの記事の説明を彼/彼女の意図されたグループだけに制限することができる方法です。この方法では、非グループメンバーは、所属していないプライベートグループ向けのノード(タイトルのみでも)を表示したりアクセスしたりできません。
コンテンツリンクがビューに表示されている場合は、OGユーザーメンバーシップとの関係を使用してビューを構成する必要があります。次に、ユーザーが現在のメンバーであるノードのみを表示するようにフィルターを設定できます。
別のオプションは、デフォルトでグループメンバーにのみグループコンテンツを表示することです。次のようなカスタムモジュールにhook_node_accessを実装します。
/**
* Implements hook_node_access()
*/
function mymodule_node_access($node, $op, $account){
if($op=='view' && isset($node->og_group_ref[LANGUAGE_NONE])){
$user=user_load($account->uid);
$node_og_group_nid=$node->og_group_ref[LANGUAGE_NONE][0]['target_id'];
$user_og_group_nid=$user->og_user_node[LANGUAGE_NONE][0]['target_id'];
if($node_og_group_nid!=$user_og_group_nid) return NODE_ACCESS_DENY;
}
}
「グループコンテンツの表示」オプションを使用すると、コンテンツが非表示になるだけで、リンクが非メンバーとして表示されます。
リンクをまったく表示したくない場合は、「グループの可視性」フィールドを追加する必要があります。フィールドを追加するには、/admin/config/group/fields
に移動します。
これにより、グループリンクと内部のすべてのコンテンツが非表示になります。