我正在创建一个网站,用户可以在其中与其他用户分享他们的内容,这样只有选定的用户才能看到您的内容。
事件内容类型具有“用户引用”字段,用户可在其中勾选要显示内容的所需用户。这是一个好的解决方案吗?问题是在尝试创建显示这些事件的视图时。
有人可以帮忙吗?
答案 0 :(得分:2)
是的,在Drupal中实现此功能的标准(好)方法是使用User Relationships模块。安装用户关系,以便用户可以与其他用户建立新的关系(例如“朋友”,“可以看到我的一些东西”,“可以看到我所有的东西”等)
您需要创建一个自定义模块,通过在显示或列出内容之前检查所需的关系是否存在来扩展访问控制权限。这可以通过直接的过程逻辑来完成,但是要注意如何构建迭代循环,以便随着站点在用户中的增长,您的自定义代码将扩展。
或者,您可以使用Flag Friend模块,这是UR的一个较轻的替代方案,它允许您以与UR相同的方式在用户之间定义标记,但没有一些额外的复杂性。
最后,根据您的实际用户情况,您可能需要查看OG(有机组),它允许您创建可以在其组内共享内容的用户组。
答案 1 :(得分:1)
Drupal的节点系统提供了一个API来实现精细的访问控制。实施hook_node_grants()和hook_node_access_record()即可使用此API。在此之前,请先查看Overview of Node Access modules,看看是否符合您的需求。
答案 2 :(得分:0)
解决了这个问题,我不得不使用共享字段中的“用户引用”数据类型,而是使用“实体引用”。然后将“实体引用”关系添加到所需视图并过滤user = current user。奇迹般有效。据我所知,实体引用有搜索字段,以便我可以在字段中搜索登录用户:)