Generics Drupal 7-generell概念,根据不同的用户设置实现通用内容类型字段

Generics Drupal 7-generell概念,根据不同的用户设置实现通用内容类型字段,generics,drupal-7,content-type,Generics,Drupal 7,Content Type,英语不是我的母语,所以我希望你能理解我的意思,请宽容些 我是一个drupal初学者,现在学习了几个星期——阅读了很多英语材料,但我需要帮助找到正确的方法 我正在尝试生成通用内容类型,其中field.display.state应根据profile2中实际存储的用户驱动设置进行更改。实际上,我没有以适当的方式实现这种依赖性 当只涉及profile2字段时,条件字段表现良好 我也看了一下 钩形 规则 现场许可 …实际上,我有点困惑哪种方法有效,我应该用哪种方法 我不是在寻找现成的代码,而是在这里寻找类

英语不是我的母语,所以我希望你能理解我的意思,请宽容些

我是一个drupal初学者,现在学习了几个星期——阅读了很多英语材料,但我需要帮助找到正确的方法

我正在尝试生成通用内容类型,其中field.display.state应根据profile2中实际存储的用户驱动设置进行更改。实际上,我没有以适当的方式实现这种依赖性

当只涉及profile2字段时,条件字段表现良好 我也看了一下 钩形 规则 现场许可

…实际上,我有点困惑哪种方法有效,我应该用哪种方法

我不是在寻找现成的代码,而是在这里寻找类似于s.t的最佳实践的提示——这里的专家如何处理这些事情,链接到主题等等

谢谢你的回答
tom

到目前为止,最好的方法是使用一些(相对)简单的代码来实现这一点

首先,您需要创建一个简单的模块。更多关于这个

一旦你有了它,你需要改变节点的显示方式。最好的挂钩是,这将允许您在渲染每个字段之前覆盖它

在这里,您需要检查内容类型是否是要更改的内容类型,执行逻辑并更改要呈现的节点对象。最后,返回修改过的节点对象

假设您的模块是
节点模块

function nodemodule_node_view($node, $view_mode) {
  global $user;
  if ($node->type=="my_content_type"){
     // Perform checks and whatnot here
     if($user->uid==123) {
       // Disable access to field_example
       $node->content['field_example']['#access'] = false;   
     }
  }

  return $node;
}
这基本上相当于用户“没有权限”查看此字段。这里的标准(
uid
=123)非常无用,但您可以使用自己的标准

如果您使用此功能,请不要忘记刷新所有缓存


另一种选择是模块,在该模块中,您可以设置哪些组可以对每个字段执行哪些操作(查看/编辑/etc),然后使用用户挂钩来更改用户组。我相信还有其他方法:)

oops只需五分钟就可以编辑一条评论……这个$user(我认为它是一个数组)是否也具有当前登录用户的profile2中的值?我需要sthg。比如user.profile2.dependingfield的值为x。。。{我没有使用profile2,但简单地看一下,您只需要通过类似于
$profile\u values=profile2\u load\u by\u user($user->uid);