创建已创建节点的用户的视图

时间:2011-01-19 13:07:15

标签: drupal-6

基本上我想创建一个块显示视图,它显示在drupal网站上发布了一些节点的所有用户的列表。

2 个答案:

答案 0 :(得分:0)

现在奇怪地想到这一点,这可能有点棘手。你有两种可能的解决方案。

1 - 创建项目类型节点的新视图。您的行样式显然将设置为 Fields 。在字段下拉取选择用户组,然后勾选用户:名称复选框。将要显示的项目设置为 0 ,以获得无限结果。

在预览下,您应该获得大量结果,如下所示:

姓名:John Doe

姓名:Mary Jane

姓名:John Doe

姓名:匿名

您所看到的是系统中发布的所有节点的作者。将存在重复,因为系统中的用户可能是多个节点的作者。遗憾的是,您不能只勾选 Distinct: 选项,因为这仅适用于节点而非用户。

如何处理重复的用户名结果?通过在主题:信息下创建自定义模板,自定义主题视图。在模板内部编写一些PHP代码,在呈现之前截取View查询的行结果,并仅从结果中呈现不同的用户名。您必须编写逻辑以确定是否已添加用户名。

就像创建一个新的自定义数组一样简单,将每个行结果(用户名)添加到数组中,但首先检查它是否已存在于自定义数组中 - 如果确实如此,则将其抛出然后转到下一个用户名。最后,您将拥有一个阵列,其中包含已在您的网站上发布的不同用户名。

瞧!有用。它并不优雅,但如果以这种方式构建,它肯定会起作用。

2 - 或许也许你可以让这个模块以不那么复杂的方式完成同样的事情:http://drupal.org/project/views_customfield但我从未使用它,所以我不能评论它。

祝你好运。希望有所帮助。

答案 1 :(得分:0)

我的解决方案是:

  • 创建人物视图
  • 添加UID字段(以及您想要的任何其他字段)
  • 为行样式
  • 创建theme.tpl.php文件
  • 通过该行对每个循环执行数据库调用,以搜索由提供的UID创建的节点。

以下是我在语义视图 - 视图字段-VIEWNAME.tpl.php

中的内容
<?php
  //Query the Drupal DB for nodes associated to the supplied UID
  $existing_nid = db_query("SELECT nid FROM {node} WHERE (type = :ctype) AND uid = :uid", array("ctype" => "CONTENT_TYPE", "uid" => $fields['uid']->content))->fetchField();

  //If the supplied UID created content of the supplied type, then show their name
  if ($existing_nid != FALSE) {
    echo "Name:" . $fields['name']->content;
  }
?>

这样,只有在数据库中包含与其关联的内容的UID才会被打印出来,而那些不会被打印出来的UID将会被打印出来。

希望有所帮助!