0

我在这里尝试做的是控制一组字段在节点视图上的显示方式。我不想通过用户角色来控制它们,因为这将是一个节点级别的权限,我不希望这些权限影响具有相同内容类型的其他节点。

例如,假设我有三个不同的角色:ROLEA、ROLEB 和 ROLEC。每个角色都有自己的权限集来访问字段。第一次创建节点时,角色为 ROLEA 的用户可以看到几个字段并可以编辑这些字段的值。当节点发布时,通过规则模块调用规则/操作,并将该节点中的状态字段设置为 STAGE1。在这个事件之后(创建了一个新节点),如果用户(ROLEA)去那个自己刚刚创建的节点,那些之前可以编辑的字段现在应该是只读的。这意味着在规则模块中,将状态字段的值设置为 STAGE1,当该节点想要被 Drupal 加载时,我们需要检查状态值,并在此基础上,如果它是例如 STAGE1,修改其他字段该特定节点,只读或可编辑,或者在某些情况下对用户隐藏它们。所以我的猜测是创建一个模块,每次加载该类型的节点时,检查状态字段(这是我们在该节点类型中创建的字段)并根据该字段的值,决定哪个节点应该出现或隐藏。这应该覆盖为特定节点类型上的那些字段设置的权限。

我正在尝试做的是创建一种方法来控制哪个字段将是只读/可编辑/隐藏基于该内容类型中特定字段的值,该字段已由Roules模块设置,基于不同阶段由不同的用户组在该节点上工作。我没有使用有机集团。我使用 Drupal 7 和规则模块以及其他几个与权限相关的模块。但是我发现没有这样的方法来处理节点级别的字段可见性,与用户角色分开。

您认为还有其他方法可以达到相同的效果吗?如果您能给我一个关于如何创建这样一个模块的想法,我将不胜感激。

我真的很感激任何和所有的意见。

4

2 回答 2

3

您可以使用以下方法创建模块并在节点表单上添加挂钩:hook_form_alterhook_form_FORM_ID_alter

使用这种钩子,您可以根据您想要的任何内容(用户角色,字段值......)轻松修改节点表单并隐藏或只读特定字段

于 2011-03-15T14:17:51.290 回答
0

还有一些hook_node_view_alter()钩子和hook_entity_view_alter()钩子允许您在渲染之前修改节点的渲染数组。在那里,您可以将字段数组设置'#access' = FALSE为隐藏或'#access' = TRUE显示它们。

如果节点的另一个字段中的日期过去有一段时间(它是“订阅过期”字段),我将使用它来隐藏一些字段。所以我不需要更改编辑表单,只需更改字段显示即可。

于 2014-03-05T11:22:56.823 回答