欢迎各位兄弟 发布技术文章
这里的技术是共享的
Drupal 社区里有几个创建评分或投票系统的模块,比如 fivestar,在 《 Drupal 7 字段 视图 关系 》上部里我们讲过,安装以后你可以为实体添加评分字段。还有 rate,你可以自己创建评分的方法,比如顶与踩,五颗星等等。这些模块提供了评分的方法,评分的数据都会通过 votingapi 来存储。
一般最终显示出来的评分都是一个平均分,也就是投票的总数除以投票的总分数。这种方法没什么不好,不过我觉得更好的方法是显示出具体的评分,比如给 一颗星的用户有多少,占了所有投票数用户的百分之多少,这样以让用户更好的判断内容的质量。amazon 的商品评价,wordpress.org 的插件库,豆瓣也用这样的形式展示内容的评分。
在 Drupal 里,你可以做出这样的评分系统,可以使用 rate + votingapi,先用 rate 模块创建一种评分小部件,可以使用五颗星的样式,然后捆绑在某种内容上,用户可以进行评分。在内容要展示不同的小星星来所占的比例,可以使用 Views 模块,安装一个 eva 模块,创建 eva 视图,它可以作为一个内容的字段展示出来。
我们可以分别创建五个 eva 类型的视图显示,视图里首先要添加两个关联,一个是投票的用户,一个是投票,使用投票的用户可以找到给当前内容投票的所有的用户,显示当前内容上的投票用 户,我们可给视图添加一个参数,提供默认值,选择 url 上内容的 id。然后开启视图的 Use aggregation,再去给视图添加一个投票用户的字段,aggregation 的计算方式可以选择次数,这样我们会得到所有投票当前内容的用户的数量。
给视图添加一个过滤条件,按评分过滤,rate 五星样式的投票小部件,当用户选择一颗星时会存储 0 分,给两颗星存储 25 分,三颗星 50 分 ... 这样你就能找到给当前内容不同星星数的用户的数量,比如给一颗星的用户。
然后你还要添加字段,找到投票人的总数,再添加一人全局计算字段,用给特定星星的用户数除以投票人的总数,再乘以 100 ,这样就会得到特定星星的用户数所占的比例了。根据这个比例你可以来设计想要的样式。
用同样方法去创建其它星星数所占的比例的视图。