用 Drupal 创建更好的评分系统的具体步骤
在 “ 用 Drupal 创建更好的评分系统 ” 里说了可以使用 Drupal 创建更好的评分系统,不过没有说明具体步骤,这个文章里补上了。
为内容添加可以投票的小部件
- 安装 Rate 模块
- 结构 - Rate widgets
- 控件类型 选择 fivestar
- 输入标题,标签,值类型 选择 Percentage(百分比),节点类型选择你想添加投票功能的内容类型
- 保存
完成以后会在你选择的内容类型的下方出现一个五星投票的小部件,用不同的用户对内容进行投票。在设置五星类型的投票小部件时,你可以为每 个星星指定对应的分数,默认如果用户选择五个星,相当于是 100 分,四个星是 75 分,三个星是 50 分,二个星是 25 分,一个星是 0 分。
为内容添加不同投票数的字段
下面我们要把不同投票数的投票人数,投票比例图示,附加到内容类型上,这一步我们要用到 Views 视图模块,还有 EVA 模块。用视图模块找出并计算出我们需要的数据,EVA 模块可以把视图附加到内容类型上 《 Drupal 7 字段 视图 关系 》这个课程里有关于视图和 EVA 模块的使用。
基本操作
- 创建视图
- 添加 EVA Field 类型的视图显示
- 修改 显示名称,比如 五星
- 在 Entity Content Settings 设置里
- 实体类型 选择 节点
- 捆绑 选择 你想把这个视图字段添加到的内容类型,也就是拥有投票功能的内容类型
这时打开视图附加到的内容类型,管理显示,你能看到一个类似:EVA: rate - 五星 这样的字段。rate 是我为视图起的名字,五星 是视图里的 EVA Field 类型的视图显示的名称。
动态过滤
为了让视图找到的结果与当前的内容相关,我们需要添加一个语境过滤器根据内容的 id 动态的过滤一下。
- 在视图显示的 高级 设置里
- 添加一个 语境过滤器,类型选择 内容:Nid
- 勾选 Provide default value(提供一个默认值),类型 选择 URL上的内容ID
添加关联
为了能在字段里添加与投票相关的字段,比如投票的人数,我们需要在视图中添加两个关联。
- 关联
- 添加关联,选择 内容: Votes 。
- 修改 标识符,改为 投票人 ,在 数据过滤 里,值类型 选择 百分比 ,投票标签 选择 正常投票
- 再添加一个关联,选择 内容: Vote results
- 在 数据过滤 里,值类型 选择 百分比,投票标签 选择 正常投票,合计函数 选择 投票数
添加字段
我们要添加一个投票结果和投票的人这两个字段。
- 字段,添加,选择 投票结果: 值,字段里的 关联 选择 投票结果,默认应该就会选择这个关联。
- 字段,添加,选择 投票: 用户,字段里的 关联 选择 投票人,默认应该就会选择这个关联。
计算出个别票数的人数
前面添加的两个字段,一个可以显示当前内容的总票数,第二个可以显示所有投票人的 ID。这一步我们要算出个别票数的人数。
- 在视图的 其它 里,找到 Use aggregation ,选择 是。
- 点击 投票:用户 字段后面的 Aggregation settings
- 选择 次数
- 在视图的 过滤标准 里,添加,选择 投票: 值
- 关联 选择 投票人,操作符 选择 等于,值 输入 100 ,这样找到的结果是投五颗星的用户,因为五星的值是 100 分。
计算百分比
下面我们根据投票的总数与投个别票的人数来算出个别票的人数占总票数的百分比。
- 添加字段,选择 全局: 算术表示
- 在 表达 里,可以输入计算公式,在 替换匹配模式 里,可以找到代表投票总数与个别投票人数的占有位符,公式看起来像这样:([uid]/[value])*100
样式
根据得到的百分比,我们可以设计相应的样式,可以根据 bootstrap 的进度条来设计。在视图的 其它 里,你可以点击 主题 后面的 信息,来查看对应的主题信息。
if you don't try,you will never know!