web-dev-qa-db-ja.com

Organic Groupの非会員は引き続きNodeリンクを表示できます

私はDrupal 7で、Organic Groupsがインストールされています。ITチーム用にプライベートグループを作成しました。つまり、そのグループのメンバーだけがグループのコンテンツを見ることができます。

私が目にしている問題は、グループのコンテンツを公開するときに、非メンバーがホームページからノードリンクを表示し、コンテンツが表示されていなくてもクリックできることです。

グループコンテンツをグループメンバーだけに表示するにはどうすればよいですか? (つまり、ノード自体は非メンバーには見えません。).

5
tresstylez

投稿された質問から6か月たっても、参考になる情報を提供させてください。うまくいけば、これはDrupal module [〜#〜] og [〜#〜] で苦労している他の人にも役立つでしょう。

コンテンツタイプでは、別のフィールドとしてGroup content visibilityがすでにバンドルされている必要があります。これを実行するには、/admin/config/group/fieldsに移動します。

OG Field Settings

この写真の私のライブの例として、私のContent Groupはグループコンテンツタイプであり、Content Group Submissionは、特定のグループにのみ表示されるホスティングarticlesのコンテンツタイプです。以下のように、このコンテンツタイプの新しいフィールドとしてバンドルグループコンテンツの可視性をバンドルする必要があります。

Group content visibility field

これは、独自のコンテンツタイプへの追加フィールドとしてGroup content visibilityフィールドがあることを意味します。

Groups audienceフィールドは、コンテンツ作成者に、作成しているコンテンツの対象読者を指定することを目的としています。 Group content visibilityフィールドは、コンテンツ作成者が特定のコンテンツの表示基準を指定できるようにするためのものです。これは、次の2つの図に最もよく示されています。次に、コンテンツタイプContent Group Submissionのフィールドセットを見てみましょう。私の例では、/admin/structure/types/manage/content_group_submission/fieldsに行きました。

Manage the fields for the group's articles

このフィールドを編集すると、デフォルトで次のオプションに制限される値が表示されます。

- None -, 
Use group defaults, 
Public, 
accessible to all site users

およびプライベート-accessible only to group members

最後のものはあなたが興味を持っているもののようです。このフィールドのデフォルト値としてそれを作成する必要があります。

Editing the "Group content visibility" field

そのすべてを保存します。また、コンテンツ作成者にはこれらのオプションが提供されます。私の場合、/node/add/content-group-submissionにアクセスします。

Adding an article for my group

そして、これはあなたのコンテンツ作成者があなたの記事の説明を彼/彼女の意図されたグループだけに制限することができる方法です。この方法では、非グループメンバーは、所属していないプライベートグループ向けのノード(タイトルのみでも)を表示したりアクセスしたりできません。

5
Loloy D

コンテンツリンクがビューに表示されている場合は、OGユーザーメンバーシップとの関係を使用してビューを構成する必要があります。次に、ユーザーが現在のメンバーであるノードのみを表示するようにフィルターを設定できます。

3
sheldonkreger

別のオプションは、デフォルトでグループメンバーにのみグループコンテンツを表示することです。次のようなカスタムモジュールに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;
    }
}
1
Nikos Tsagkas

「グループコンテンツの表示」オプションを使用すると、コンテンツが非表示になるだけで、リンクが非メンバーとして表示されます。

リンクをまったく表示したくない場合は、「グループの可視性」フィールドを追加する必要があります。フィールドを追加するには、/admin/config/group/fieldsに移動します。

これにより、グループリンクと内部のすべてのコンテンツが非表示になります。

0
joncjordan