Drupal:从视图2中的多个节点类型中检索数据?

时间:2009-10-06 06:44:53

标签: drupal views2

...或者换句话说,如何像在SQL中那样创建一个简单的连接?

假设我想要以下信息:

仅作为一个例子:

  • 一个人的全名
  • 一个人的爱好。

他的全名是(内容简介)节点类型'name_and_address',他的爱好是'爱好'。

在SQL中,我会通过node.uid将它们链接在一起。 我已经看过一些关于使用关系的内容,但这与user-node-refs有关。 我只想要一个内容类型和另一个内容相同的用户。

现在我怎么能在1个视图中得到他的名字和爱好?

3 个答案:

答案 0 :(得分:2)

这有here如何完成这项工作?

如果没有......

可以使用自定义连接,过滤器等扩展视图。如果您很幸运,将会有一个模块。有些模块甚至提供了自己的视图插件。

你可以编写自己的视图插件,虽然文档有点碎片化。

应该注意的另一件事是观点并不总是答案。有时编写自定义查询和显示处理程序可以轻松完成您想要的任务。

答案 1 :(得分:0)

查看视图的关系部分。这允许您关联(即加入)不同类型的内容(即表格)。对于习惯使用SQL的人来说,这并不是特别直观,但这段视频解释了很多内容。 http://www.drupalove.com/drupal-video/demonstration-how-use-views-2s-relationships

答案 2 :(得分:0)

您可以在模板文件中使用views_embed_view()手动指定它们的显示位置(并通过扩展程序在另一个视图下方渲染一个视图)。 您可以在自定义模块(modulename_embed_view($name, $display_id)中覆盖此功能,以便有选择地编辑允许哪些数据进入页面。

例):

function modulename_embed_view($name, $display_id) {
  if (strcmp($_GET['q'], 'node/123') === 0) {
    $view = views_get_view($name);
    $view2 = views_get_view('second view');
    $output = $view['some element'] . $view2['element'];
  }
  return $output;
}

我知道这非常黑客 - 我只想展示如何使用php手动渲染和修改模板文件中的视图。