【问题标题】:How can I work out this view?我怎样才能得出这个观点?
【发布时间】:2010-08-13 05:21:43
【问题描述】:
  • List -> l_user 我有一个 List 节点,它有一个用户引用字段 (l_user)。
  • Story -> s-user 然后我有 Story 节点,这些节点也有一个用户引用字段 (s_user)。
  • ListStory 之间没有直接联系。

我想向List 添加一个视图,其中列出了引用list 引用的同一用户的所有故事。基本上,SELECT stories WHERE story.s_user = this list.l_userl_user 之类的内容是此视图所在列表中引用的用户。

到目前为止,视图正在被node:type story 过滤,但我不确定使用什么(参数/过滤器等)将story s_user 链接到list l_user

这对 Views 可行吗?

【问题讨论】:

    标签: php drupal drupal-views


    【解决方案1】:

    您可以使用 Views 参数来做到这一点。您要做的是按用户过滤该列表,然后让用户从您当前所在的节点(或更具体地说,节点的用户参考字段)进行过滤。所以你需要做的是为视图提供一个等于节点的用户引用字段的参数。

    为此,请照常设置您的视图,就好像您要显示每个用户的节点一样。所以你可能会有这样的看法:

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

    其中用户是每个页面上的用户参考字段,称为故事用户参考

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

    仍然在 Content: Story user reference 的参数配置窗格中,选择 如果参数不存在则采取的措施下的提供默认参数 .您将获得多种选项,但都不是您要寻找的:当前节点的用户参考字段。

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

    $node = node_load(arg(1));
    return $node->field_list_user[0]['uid'];
    

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

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

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

    【讨论】:

    • 谢谢。您的回答与 Scott Reynen 的回答相结合有帮助。但这个更彻底,所以它值得打勾。
    【解决方案2】:

    我建议从列表节点获取所有用户引用并将它们传递给视图参数。所以你的代码看起来像这样(未经测试):

    $user_ids = array();
    foreach ($list_node->l_user as $user_reference) {
      $user_ids[] = $user_reference['uid'];
    }
    $view = views_get_view('list_view');
    return $view->preview('block_1', array(implode(',', $user_ids));
    

    假设您有一个名为“list_view”的视图和一个名为“block_1”的显示(当您将鼠标悬停在显示上时,您可以看到机器名称)。该显示需要是一个节点视图,具有节点类型“故事”的过滤器和内容 user_l 的参数设置为采用多个值。几乎可以肯定该代码中存在错误,但我知道一般概念有效,因为我之前已经做过几次了。

    【讨论】:

    • 非常感谢。您的回答与 Mark Trapp 的回答相结合有所帮助。
    【解决方案3】:

    要解决这个问题,您需要下载 NodeReferrer。 http://drupal.org/project/nodereferrer

    它提供了 CCK 的节点引用字段的对应部分。

    然后您可以在您的视图中调用字段“节点引用者”。

    【讨论】:

    • 但是在视图本身中,我该如何对待“node referrer”字段呢?作为参数或过滤器或其他东西?
    • 我假设您希望所有故事都连接到用户?参考字段是否位于内容类型的用户或故事中?
    • storylist 都包含一个存储user 的字段。但是,我正在尝试将视图添加到 list,并且该视图应仅包含 stories,其 user 与列表中的 user 匹配。
    猜你喜欢
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    相关资源
    最近更新 更多