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