我该如何解决这个问题?

Ber*_*ing 2 php drupal drupal-views

  • List -> l_user我有一个List具有用户引用字段(l_user)的节点.
  • Story -> s-user然后,我有Story节点还具有用户基准场(s_user).
  • List和之间没有直接联系Story.

我想补充一个观点List,列出所有指向同一用户的故事list引用.基本上类似SELECT stories WHERE story.s_user = this list.l_user,并l_user在列表中这个观点是对引用的用户.

到目前为止,观点正在被过滤的node:type story,但我不知道用什么(参数/过滤等)来链接story s_userlist l_user.

这是可以使用Views吗?

小智 5

您可以使用Views参数执行此操作.您要做的是按用户过滤该列表,并让用户从您当前所在的节点(或更具体地说,节点的用户参考字段)进行过滤.因此,您需要做的是提供一个参数,该参数的参数等于节点的用户引用字段.

为此,请正常设置视图,就像显示每个用户的节点一样.所以你可能有一个类似的观点:

  • 第1页(用户1)
  • 第2页(用户1)
  • 第3页(用户2)
  • 第4页(用户2)
  • 第5页(用户1)

用户是每个页面上的用户引用字段,称为Story用户引用.

现在,在Arguments下为Content:Story用户引用添加一个参数.现在,视图将仅显示由参数中指定的用户发布的节点.问题是,在一个块中,没有参数可以指定:您需要提供一个默认参数.

仍然在Content:Story用户引用的参数配置窗格中, 如果参数不存在,请选择Action下的提供默认参数.您将获得各种选项,但它们都不是您正在寻找的:当前节点的用户参考字段.

因此,您需要使用PHP代码操作并使用以下代码:

$node = node_load(arg(1));
return $node->field_list_user[0]['uid'];
Run Code Online (Sandbox Code Playgroud)

这将根据从当前页面路径检索到的节点ID加载节点,并返回节点的用户引用字段(更改field_list_user为列表节点上的用户引用字段的名称).

因此,如果我在节点17上,其用户引用字段指定用户4,则将传递给视图的参数为4.然后,视图将仅显示视图中具有也为4的用户引用的节点.

保存视图,创建块显示,并将其放在任何位置.当您访问带有用户引用字段的节点页面时,该块将填充引用的用户节点.