我很抱歉,但这个问题的答案解释起来相当复杂。这个概念实际上很简单。
您将需要使用基于节点访问的模块。节点访问模块有什么作用?请参见:
http://drupal.org/node/270000以获得良好的概述
首先,创建 3 个用户角色。让我们称它们为:Role_A、Role_B、Role_C。然后创建一个名为 Group 的词汇表。在 Group 词汇表中添加三个术语:Group_A、Group_B、Group_C。
确保组词汇适用于您要控制的所有内容类型,例如页面、故事等。
概念如下: Role_A 的用户在创建节点时,应将 Group_A 术语添加到节点。当 Role_B 的用户创建节点时,他应该将 Group_B 术语添加到节点。Role_C 的用户在创建节点时,应添加 Group_C 术语。我知道您希望用户不必这样做……我们可以通过一些方法来避免这种情况或使其变得简单……继续阅读。
使用分类访问控制lite模块http://drupal.org/project/tac_lite您将使其:
角色 A 将有权查看具有分类术语 Group_A 或 Group_B 或 Group_C 的所有节点。角色 B 将有权查看具有分类术语 Group_B 的所有节点。角色 C 将有权查看具有分类术语 Group_A 或 Group_C 的所有节点
现在您需要防止 Role_A 的用户附加 Group 词汇表中除Group_A 之外的任何术语。即 Role_A 用户应该只能将术语 Group_A 添加到他们的节点,Role_B 用户应该只能将术语 Group_B 添加到他们的节点,而 Role_C 用户应该只能将术语 Group_C 添加到他们的节点。
您可以通过使用术语权限模块http://drupal.org/project/term_permissions来做到这一点
转到组词汇表中的每个术语并对其进行编辑,现在可以使用权限部分。因此,让 Role_A仅对术语 Group_A 具有权限,对于 Group_B 的 Role_B 和对于 Group_C 的 Role_C。
现在您应该将 Group 词汇设置为必需(单击编辑词汇设置中的必需复选框)。这是为了让用户被迫选择他们的组。请注意,由于长期权限,他们的下拉列表中只有一项需要从中进行选择,因此这是微不足道的。
视图模块将开箱即用。Role_A 用户将只能看到他们应该看到的节点等等。所以你在那里没问题。
注意 1:如果您希望人们不必担心必须选择组,您可以随时使用规则模块来确保节点在保存时标记有特定的分类术语。请参阅http://drupal.org/project/rules。因此,如果用户角色是角色 A,那么您将在保存时添加 Group_A 术语,依此类推。如果您使用规则,则无需将组词汇设为“必需”。
注意 2:请注意,您可以简单地使用分类访问控制http://drupal.org/project/taxonomy_access ,而不是使用分类访问控制lite + 术语权限模块组合,这是一个强大但更棘手的模块。
Note 3: Please note that at the time of writing this, the term permissions module interferes with the Hierarchical Select (HS) Module and perhaps the taxonomy super select (TSS) modules. So if you are using the HS/TSS modules you will need to user taxonomy access control (and not tac_lite)