2011-01-19 53 views

回答

0

奇怪的是,现在考虑这个问题可能会有点棘手。我有两种可能的解决方案。

1 - 创建项目类型的新视图节点。您的排行样式显然会设置为字段。其中字段拉选择用户组,然后勾选用户:名称复选框。将您的项目显示为设置为无限的结果。

在预览你应该得到一吨的结果看起来像的:

名称:李四

名称:玛丽·简

名称:李四

姓名:匿名

你所看到的是的所有作者发布在你的系统中的节点。会有重复,因为系统中的用户可能是多个节点的作者。不幸的是,你不能只勾选区别:是的选项,因为这只适用于节点而不适用于用户。

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

就像创建一个新的自定义数组一样简单,将每个行结果(用户名)添加到数组中,但首先检查它是否已经存在于您的自定义数组中 - 如果它确实存在,然后转移到下一个用户名称。最后,您将有一个数组填充了在您的网站上发布的不同用户名。

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

2 - 或者,也许你可以得到这个模块的工作来实现在一个不太复杂的方式同样的事情:http://drupal.org/project/views_customfield,但我从来没有使用过,所以我不能对此发表评论。

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

+0

嘿,非常感谢,但我解决了相同的使用另一个模块..其中一个视图字段称为views_custom_field..woted查询在我需要的4wt wt ..它帮助..新的thnx很多4你的hlp .. – 2011-01-22 12:47:07

0

我的解决办法是:

  • 创建视图的人
  • 添加UID场(以及任何其他领域,你想)
  • 创建的行样式一个theme.tpl.php文件
  • 在该行的每个循环上执行数据库调用,以搜索由提供的UID创建的节点。

以下是我在我的semanticviews视场-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的有在DB与其相关联的内容将被打印出来,那些不会的,不会的。

希望帮助!