欢迎各位兄弟 发布技术文章

这里的技术是共享的

You are here

用 Drupal 创建更好的评分系统

shiping1 的头像

用 Drupal 创建更好的评分系统

Drupal 社区里有几个创建评分或投票系统的模块,比如 fivestar,在 《 Drupal 7 字段 视图 关系 》上部里我们讲过,安装以后你可以为实体添加评分字段。还有 rate,你可以自己创建评分的方法,比如顶与踩,五颗星等等。这些模块提供了评分的方法,评分的数据都会通过 votingapi 来存储。

一般最终显示出来的评分都是一个平均分,也就是投票的总数除以投票的总分数。这种方法没什么不好,不过我觉得更好的方法是显示出具体的评分,比如给 一颗星的用户有多少,占了所有投票数用户的百分之多少,这样以让用户更好的判断内容的质量。amazon 的商品评价,wordpress.org 的插件库,豆瓣也用这样的形式展示内容的评分。
用 Drupal 创建更好的评分系统
在 Drupal 里,你可以做出这样的评分系统,可以使用 rate + votingapi,先用 rate 模块创建一种评分小部件,可以使用五颗星的样式,然后捆绑在某种内容上,用户可以进行评分。在内容要展示不同的小星星来所占的比例,可以使用 Views 模块,安装一个 eva 模块,创建 eva 视图,它可以作为一个内容的字段展示出来。

我们可以分别创建五个 eva 类型的视图显示,视图里首先要添加两个关联,一个是投票的用户,一个是投票,使用投票的用户可以找到给当前内容投票的所有的用户,显示当前内容上的投票用 户,我们可给视图添加一个参数,提供默认值,选择 url 上内容的 id。然后开启视图的 Use aggregation,再去给视图添加一个投票用户的字段,aggregation 的计算方式可以选择次数,这样我们会得到所有投票当前内容的用户的数量。

给视图添加一个过滤条件,按评分过滤,rate 五星样式的投票小部件,当用户选择一颗星时会存储 0 分,给两颗星存储 25 分,三颗星 50 分 ...  这样你就能找到给当前内容不同星星数的用户的数量,比如给一颗星的用户。

然后你还要添加字段,找到投票人的总数,再添加一人全局计算字段,用给特定星星的用户数除以投票人的总数,再乘以 100 ,这样就会得到特定星星的用户数所占的比例了。根据这个比例你可以来设计想要的样式。

用同样方法去创建其它星星数所占的比例的视图。

标签: 
Drupal

评论

好!好!好!Thanks
皓哥,要不出个php&myaql、javascript、jquery的基础点教程吧,你是如此出色的男人!
中 ~
什么时候出个Drupal+ZEN+Bootstrap的教程就好了,要自己从头写模板,压力还是比较大,有现成框架的教程就好了,就像老师上课,学完了公式,在举个例子更容易记忆。
好 ! 关于 Drupal 的主题还会再有一些课程。
是的.现在每天都在研究drupal的模板了,感觉好吃力.呵呵!.
一切都是值得的。
皓哥,能不能给咱剧透下,下期视频的主题是围绕神马地,别总Drupal呀
嘿嘿。有个 WordPress 相关的。
皓哥 博客文章能不能详细点?(能不能弄成类似小的功能教程那样)然后根据用户是否付费来观看~ 大的应就要弄成视频(弄视频成本会高点),但小的应用弄成小教程,给我这样的菜鸟学学习习,这样不是很棒~ 期待~ 希望能出点详细的运用文章~
嘿嘿,写文字教程也需要时间,一天只能写一个文章。
《用 Drupal 创建更好的评分系统》 这篇文章 我按着你的想法做~ 没做成 T_T 能不能给点详细点的教程~ 遇到的问题: 投票人的总数 没有找到这个字段 rate 模块 不能生成字段~ fivestar可以生成字段(这样方便控制) 请问为什么要选择rate?
Rate 更灵活一些,可以自由创建投票的小组件,Rate 没有提供字段,不过应该可以使用视图模块 + EVA ,把 Rate 附加到内容上当做是一个字段。当然你也可以使用 fivestar 模块。投票人的总数,或者算出投5星的多少人,投 4 星的多少人 ... 这些可以使用视图的 aggregation ,在视图的高级设置里可以开启这个功能。
我知道 可以通过aggregation 计算 5星 4星 的人数 但是上面不是说为了找到给当前内容不同星星数的用户的数量 要添加一个评分过滤条件,这样这样怎么会有总人数? 能不能说详细点? 而且Rate 不知道怎么弄成字段?
而且我发现要实现上图的效果 不是很容易~ 这个要不要弄成视频? 强烈需要~ 谢谢!
我想问一下,怎样把drupal 发布日期后面的小时,分钟,秒这些去掉
结构 - 内容类型 ,编辑你想去掉日期的内容类型,在 展示设置 里去掉 显示作者和日期信息。
皓哥 通过aggregation 计算 5星 4星 的人数 但是上面不是说为了找到给当前内容不同星星数的用户的数量 要添加一个评分过滤条件,这样这样怎么会有总人数? 能不能说详细点? 急需要实现上面的效果~ T——T
好的,我再写写哈。

来自 http://ninghao.net/blog/771
普通分类: