基本上我想创建一个块显示视图,它显示在drupal网站上发布了一些节点的所有用户的列表。
答案 0 :(得分:0)
现在奇怪地想到这一点,这可能有点棘手。你有两种可能的解决方案。
1 - 创建项目类型节点的新视图。您的行样式显然将设置为 Fields 。在字段下拉取选择用户组,然后勾选用户:名称复选框。将要显示的项目设置为 0 ,以获得无限结果。
在预览下,您应该获得大量结果,如下所示:
姓名:John Doe
姓名:Mary Jane
姓名:John Doe
姓名:匿名
您所看到的是系统中发布的所有节点的作者。将存在重复,因为系统中的用户可能是多个节点的作者。遗憾的是,您不能只勾选 Distinct: 是选项,因为这仅适用于节点而非用户。
如何处理重复的用户名结果?通过在主题:信息下创建自定义模板,自定义主题视图。在模板内部编写一些PHP代码,在呈现之前截取View查询的行结果,并仅从结果中呈现不同的用户名。您必须编写逻辑以确定是否已添加用户名。
就像创建一个新的自定义数组一样简单,将每个行结果(用户名)添加到数组中,但首先检查它是否已存在于自定义数组中 - 如果确实如此,则将其抛出然后转到下一个用户名。最后,您将拥有一个阵列,其中包含已在您的网站上发布的不同用户名。
瞧!有用。它并不优雅,但如果以这种方式构建,它肯定会起作用。
2 - 或许也许你可以让这个模块以不那么复杂的方式完成同样的事情:http://drupal.org/project/views_customfield但我从未使用它,所以我不能评论它。
祝你好运。希望有所帮助。答案 1 :(得分:0)
我的解决方案是:
以下是我在语义视图 - 视图字段-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将会被打印出来。
希望有所帮助!