获取访客的历史评论

51天前489

前两天在Kam 博客上看到有个小铃铛,如果你是已评论或者登录状态,点击可以看到你之前在他博客的评论,想着好像可以干些什么,hah~

在网上找到了一个 typecho 类似功能的,然后改了改,目前实现用户在 cookie 记住邮箱的前提下,调用出用户之前评论过的内容,还不错。

当然,这里还要感谢Kiosr教我的语法调用,嘿嘿。

修改后的代码如下(原文链接):

在 function 里加入:
class Widget_Comments_RecentPlus extends Widget_Abstract_Comments
{
    public function __construct($request, $response, $params = NULL)
    {
        parent::__construct($request, $response, $params);
        $this->parameter->setDefault(array('pageSize' => $this->options->commentsListSize, 'parentId' => 0, 'ignoreAuthor' => false));
    }
    public function execute()
    {
        $select  = $this->select()->limit($this->parameter->pageSize)
        ->where('table.comments.status = ?', 'approved')
        ->order('table.comments.coid', Typecho_Db::SORT_DESC);
        if ($this->parameter->parentId) {
            $select->where('cid = ?', $this->parameter->parentId);
        }
        if ($this->options->commentsShowCommentOnly) {
            $select->where('type = ?', 'comment');
        }
        /** 忽略作者评论 */
        if ($this->parameter->ignoreAuthor) {
            $select->where('ownerId <> authorId');
        }
        if ($this->parameter->mail) {
            $select->where('mail = ?', $this->parameter->mail);
        }
        $this->db->fetchAll($select, array($this, 'push'));
    }
}

然后在需要的地方调用即可:

<?php if ($this->remember('mail',true) != "") :?>
  <?php $mail=Typecho_Cookie::get('__typecho_remember_mail'); $this->widget('Widget_Comments_RecentPlus', 'mail='.$mail)->to($comments);?>
  <?php while($comments->next()): ?>
    <li><a href="<?php $comments->permalink(); ?>"><?php strip_tags($comments->excerpt(99, '..')); ?></a></li>
  <?php endwhile; ?>
<?php endif;?>

不过这只是简单的调出了用户历史评论,至于弄这玩意有个啥用,先按下不表,可以发挥想象力做一些有趣的小功能,挖个坑,以后慢慢再填,哈哈。

PHPTypecho分享13 

获取访客的历史评论 - Jdeal | Life is like a Design.