好心情Blog

回忆过去发生的,记录现在拥有的,展望未来改变的。

May
18
Z-Blog插件:文章投票(打分)

本来这个插件应该是上个周末就应该写出来的, 但最近一直忙着跑调动的事, 每天只有睡觉前一两个小时时间写代码, 所以进度非常缓慢, 到昨天晚上才写完.

还是老规矩: 1. 与具体系统无关, 以便可以方便地移植到其它系统上 2. 在保证功能的基础上尽量不影响服务器性能. 3.尽量少改动模板或源码 4. 用户拿到插件后尽量不需要改动, 争取做到上传就能用

用法:

  1. 下载附件中的压缩文件, 解压到Z-Blog的Plugin文件夹下
  2. 修改Template文件夹下的模板single.html的</body>标签前插入以下脚本:
    <Script language="javascript" type="text/javascript" src="<#ZC_BLOG_HOST#>PLUGIN/Rating/Rating.js"></script>
  3. 修改Template文件夹下的模板b_article-single.html, 在适当位置(我是在TrackBack地址下方)插件以下标签:
    <div id="RatingPre"></div>
  4. 在CSS样式表中加入以下样式:
    /*文章投票(打分)开始*/
    #Rating {
    text-align:left;
    border:1px #B0BDC6 solid;
    padding:10px;
    margin: 0 0 10px 0;
    overflow: auto;
    _height: 1%;
    }
    #Star {
        background-image: url(../PLUGIN/Rating/star.gif);
        height: 30px;
        width: 150px;
        float: left;
    }
    #Star-Cur {
        background-image: url(../PLUGIN/Rating/star.gif);
        background-position: 0px -60px;
        width: 0px;
        position: absolute;
        z-index: 11;
        height: 30px;
    }
    #Star1 {
        position: absolute;
        z-index: 20;
        height: 30px;
        width: 30px;
    }
    #Star2 {
        position: absolute;
        z-index: 19;
        height: 30px;
        width: 60px;
    }
    #Star3 {
        position: absolute;
        z-index: 18;
        height: 30px;
        width: 90px;
    }
    #Star4 {
        position: absolute;
        z-index: 17;
        height: 30px;
        width: 120px;
    }
    #Star5 {
        position: absolute;
        z-index: 16;
        height: 30px;
        width: 150px;
    }
    #Star1:hover, #Star2:hover, #Star3:hover, #Star4:hover, #Star5:hover {
        background-image: url(../PLUGIN/Rating/star.gif);
        background-position: -30px;
    }
    #Score {
        line-height: 30px;
        text-align: center;
        float: left;
        width: 250px;
    }

    #Rating-show{    /*文章得分及投票次数*/

    }
    Rating-now{    /*正在投票,请稍候*/
        color: #FF0000;    
    }
    #Rating-Tanks {    /*投票成功,感谢您的投票*/
        color:Green;
        font-weight: bold;    
    }
    #Rating-already{    /*已投过票*/
        color:red;
        font-weight: bold;    
    }
    #Rating-err{    /*遇到错误*/
        color:red;
        font-weight: bold;    
    }
    /*文章投票(打分)结束*/

说明:

  1. 以上样式表中红色部分(星级图片的地址)可能需要手工改一下(本想把这个地址也写成自动的, 但如果写进脚本的话以后再改成别的样式会比较麻烦, 考虑之后决定还是写进了样式表)
  2. "PLUGIN/Rating/"这个文件夹要有写权限
  3. 考虑到大多数人的Blog都是显示多,评分很少, 所以用了文件缓存, 只有评分时才需要读写数据库, 其它时候不需要从数据库读取数据.
  4. 因为最近心情一直不好, 所以偷了点懒, 省了点功能, 具体就不说了 (^_^)

版本变更:

V1.1 2007年5月23日
由于编码时的疏忽, 造成了投票统计的不准确, 现已更正.
新用户直接下载安装即可, 已经在使用本插件的用户只需要用新下载的压缩包中的Rating.asp替换掉Blog中正在使用的即可. 老用户上传后随便在一篇文章中投一票, 插件就可以把投票统计的缓存刷新了.
【感谢Yczhang hakkawawa angelwing等朋友发现本Bug】

V1.2 2007年5月24日
Bug修正, 解决了当文章ID为100的整数倍时投票显示不正确的问题.
正在使用插件的用户请把压缩包中的Rating.asp Rating.js两个文件上传到插件目录, 上传后随意在一篇文章中投一票就可以刷新投票缓存.
【感谢 ly 发现本Bug】

V1.3 2007年5月28日
改进了Blog ID的获取方式, 使用了别名的文章也可以正常投票了.
【感谢 angelwing 提出修改建议】

V1.4 2007年6月1日
改进: 锁定文章自动停用评分功能, 不显示当前分数, 也不允许评分.
【感谢 Angelwing 提出本建议】

升级方法:
正在使用插件的用户请把压缩包中的Rating.asp Rating.js两个文件上传到插件目录, 上传后随意在一篇文章中投一票就可以刷新投票缓存.


关于投票脚本的防范:

月光博客的读者实在是多, 月光刚推出本插件的修改版, 就有人写了本插件的投票脚本. 虽然可以在服务器端做检测的话可以防止这种恶意投票, 但这就需要加大服务器端系统资源的占用量了. 再者说来, 我相信写投票脚本的朋友其实是没有恶意的, 只是觉得好玩而已. 所以也就不必刻意地去防范.

这里给出一个简单的修改, 可以防止通用的投票脚本:
打开Rating.js这个文件, 把Rating(指替换为任意字母组合+(就可以了, 如:abcdde(.

这种办法只是防止在别人网站上投票的脚本拿到你的网站上直接用而已, 如果想彻底防的话需要改Rating.asp, 有必要的话再增加这个功能吧.


插件下载: Rating.rar

评论[ 20 ]
2007-5-18 16:29:44 [回复] [编辑] [删除] 第1楼. Zx.MYS
不错~!
2007-5-19 18:57:42 [回复] [编辑] [删除] 第2楼. 孔夫子
手动部分的地址,应该填什么?我真了主页地址没效果呀。只有文字
2007-5-19 22:23:00 [回复] [编辑] [删除] 第3楼. 软件兔
到你的BLOG看了一下,插件工作很正常呀
2007-5-22 10:45:30 [回复] [编辑] [删除] 第4楼. 惟以永不忘
我的也按步骤加了,但是没有什么变化》。。。。。。。。。。。。。
2007-5-22 16:14:24 [回复] [编辑] [删除] 第5楼. 软件兔
在你的Blog源码中没看到投票的脚本呀
2007-5-23 10:00:40 [回复] [编辑] [删除] 第6楼. Yczhang
出问题啦!!!
只能给一篇文章打分, 要是给第二篇文章打分的话前面那篇文章的分数就自动清零了, 显示 当前尚无评分记录After_boom
软件兔 于 2007-5-23 10:00:40 回复
你的Blog中好象没加投票的代码呀,看你的描述应该是缓存造成的,其实评分记录还是有的,只不过看第二篇文章时浏览器没有刷新评分文件,而是从本的缓存加载的.
2007-5-23 13:09:54 [回复] [编辑] [删除] 第7楼. Yczhang
看看你自己的, 也是这样, 我到你另一篇文章打了分, 回来看这篇文章的分数全没了
软件兔 于 2007-5-23 13:09:54 回复
呵呵,发现问题了,已改正了,谢谢你的测试~
2007-5-23 17:23:30 [回复] [编辑] [删除] 第8楼. Yczhang
请问怎么更正???
软件兔 于 2007-5-23 17:23:30 回复
下载压缩包, 把其中的Rating.asp重新上传到服务器,然后随便给自己的哪篇文章打一下分就可以了.
2007-5-23 20:41:32 [回复] [编辑] [删除] 第9楼. Yczhang
终于搞定了,万分感谢!!!Grimace
2007-5-24 17:47:37 [回复] [编辑] [删除] 第10楼. ly
当文章ID为100的整数时候会出错。
软件兔 于 2007-5-24 17:47:37 回复
问题已修复,请下载最新版本然后把Rating.asp Rating.js两个文件重新上传,并在任一文章中投一票刷新一下投票缓存.
2007-5-26 15:08:41 [回复] [编辑] [删除] 第11楼. 南阳
很好的插件。不过如果打分能选择给几分应该更好。比如可以选择给5星,4星,3星那样,然后求均值。
软件兔 于 2007-5-26 15:08:41 回复
但似乎这个插件本来就是实现这种功能的呀~Hehe
2007-5-30 10:31:27 [回复] [编辑] [删除] 第12楼. Angelwing
插件还有个地方需要改进的,就是对于不想别人评论的锁定文章,不允许评论文章,不允许评分,这样更好了~
2007-5-30 16:48:09 [回复] [编辑] [删除] 第13楼. 软件兔
呵呵,我倒从来没想过这个问题.不过,这个功能也好实现.等哪天有时间改一下就好了.
2007-7-18 2:13:52 [回复] [编辑] [删除] 第14楼. 网赚的博客
上次没用上
2007-9-13 6:41:01 [回复] [编辑] [删除] 第15楼. 七彩
请问老大,到底要在哪个CSS文件中加入投票代码啊。
软件兔 于 2007-9-13 6:41:01 回复
只要是页面中调用的CSS文件,哪个都行呀
具体要看你用的是什么风格了
2008-1-20 10:59:17 [回复] [编辑] [删除] 第16楼. iep.r
修改getID函数后在其它系统上时提示undefined为空或不是对象
2008-2-6 2:09:24 [回复] [编辑] [删除] 第17楼. yangel
按说明修改后为什么显示

当前尚无评分记录


软件兔 于 2008-2-6 15:15:25 回复
最好能留下地址我去看一下,否则只能猜了。
刚装上时当然没有评分记录,而且插件要求对自己所在的文件夹需要有写权限,否则也是没有评分记录。
2008-2-28 16:11:03 [回复] [编辑] [删除] 第18楼. lee
我的邮箱:
benqq16@163.com
找不到:
1. 下载附件中的压缩文件, 解压到Z-Blog的Plugin文件夹下
2. 修改Template文件夹下的模板single.html的</body>标签前插入以下脚本:
<Script language="javascript" type="text/javascript"src="<#ZC_BLOG_HOST#>PLUGIN/Rating/Rating.js"></script>
3. 修改Template文件夹下的模板b_article-single.html, 在适当位置(我是在TrackBack地址下方)插件以下标签:
<div id="RatingPre"></div>

那个压缩包不全呀
2008-5-23 15:54:08 [回复] [编辑] [删除] 第19楼. sky
你好,我用了你的这个插件为什么其它正常,可是星星的图片不显示呢?那个gif的地址应该也没错啊!是默认的位置啊
谢谢啦!
2008-5-23 15:57:08 [回复] [编辑] [删除] 第20楼. sky
你好,我使用了这个插件其它都正常,可星星图片不显示,请问是怎么回事啊?那个gif的地址应该是么有错的啊,是默认地址!
谢谢啦!

发表评论:

Blog搜索

Blog分类

RSS订阅



可能与本文相关的广告

最新评论及回复

留言本最新留言

最新文章

Tags云集

Powered by Z-Blog and Template by 软件兔. 随意转载, 但请在文章中加上本站链接:〖好心情Blog〗