为文章点赞:TeStat插件(2015.11.25更新)

绛木子 43.6k 316 21

2015.11.25更新

为点赞添加了样式及js(依赖Jquery);
调用代码示例:

<a class="btn-like" data-cid="<?php $this->cid();?>" data-num="<?php $this->likesNum();?>">喜欢 <span class="post-likes-num"><?php $this->likesNum();?></span></a>

其中:class="btn-like"以及data-cid=""为必须

2015.10.21更新

经常想看看TE的性能到底怎么样,却没有很直观的手段,所以找了找Tp的源码,拷贝了Trace中部分统计的功能

  1. 增加加载时间的统计
  2. 增加内存占用的统计
  3. 增加加载文件数的统计

使用<?php TeStat_Plugin::runtime(); ?>,即可调用
具体效果请见本页页底


最近又折腾了一下主题,其中希望用到点赞的功能,网上也能找到现成的插件,不过这里还是记录一下吧

一般情况下点赞的步骤

  1. 点击赞按钮
  2. ajax发布请求并获取结果
  3. 解析请求结果并提示

前端因为是配合主题的,这里就不多说了

插件解决的就是ajax请求的地址的问题

Helper::addAction('likes', 'TeStat_Action');

通过Helper::addAction添加一个动作,第一个参数是动作名称,效果就是siteUrl/action/likes,第二个参数标识执行次动作的类/函数。TeStat_Action表示的就是TeStat插件目录下的Action.php文件。
Action.php文件写法类似:

class TeStat_Action extends Typecho_Widget implements Widget_Interface_Do{
    public function action(){
        //todo
    }
}

最终的请求就发送到了action方法上,处理具体的业务逻辑。
在具体的处理的过程中,用户的赞过的文章的id会存储在cookie中,避免用户重复点赞。用户浏览数也是使用相同的策略
(当用户禁用cookie或清除cookie后,能够继续点赞,不够严谨,但是综合考虑还是使用的cookie)

使用方法:

$this->viewsNum();    //浏览数
$this->likesNum();    //点赞数

最后
因为是主题配套的插件,想要使用的话还需要自己写前端的代码……
下载地址:TeStat.rar