Typecho文章评分插件
看到@ClayMore 留言所说了投票评分插件,试着弄了一下,大致实现了基本的功能。这里记一下自己Coding的过程,欢迎大家拍砖!
插件思路:
首先需要两个字段来保存评分数据
ratingsNum:评分用户数
ratingsAverage:平均评分
最直接的想法就是在contents表中添加两个字段
if (!array_key_exists('ratings_users', $db->fetchRow($db->select()->from('table.contents'))))
$db->query('ALTER TABLE `'. $prefix .'contents` ADD `ratingsNum` INT(10) DEFAULT 0;');
if (!array_key_exists('ratings_average', $db->fetchRow($db->select()->from('table.contents'))))
$db->query('ALTER TABLE `'. $prefix .'contents` ADD `ratingsAverage` DECIMAL(2,1) DEFAULT 0.0;');
然后使用 Helper::addAction()
方法添加一个供评分操作的路由
Helper::addAction('rating', 'TePostRatings_Action');
按照这个思路,很快就实现了这个功能。但是!!!
只要启用了评分插件,所有的文章都会有评分的功能,难道再添加一个字段来控制文章是否启用评分?
还是不要在contents表中添加太多字段了吧!
于是重新想办法:使用Typecho自定义字段
在需要启用评分功能的文章中,直接定义两个字段用于保存评分数据
直接在模版中调用插件用于显示投票评分的方法,如果没有自定义评分字段,则直接返回
使用方法
1、在后台启用‘TePostRatings’插件(会在内容表(contents)中新增两个字段:ratingsNum:评分用户数;ratingsAverage:平均评分;),
2、把<?php TePostRatings_Plugin::rating();?>
放在模版中需要显示的位置;
3、在页面查看效果
还可以使用TePostRatings_Plugin::show($config,$pattern)
调用评分排行
$config = 'order=num(或average)&sort=desc&limit=10' //显示参数
$pattern = '<li><a href="{permalink}">{title}</a></li>' //显示样式
2015.07.04更新
直接把字段添加到contents
字段
下载地址:TePostRatings
欢迎大家下载测试,不推荐直接使用