Typecho代码版读者墙(不带头像缓存)

之前有博主来这里留言说,没有读者墙,刷着没意思。那时我也还没折腾一个读者墙的想法,直到昨晚,就心血来潮,想折腾一个读者墙出来玩一下。好了,于是这个玩意就诞生了。

Typecho读者墙

读者墙,说白了就是评论者按一定的顺序筛选,可以筛选全部的评论,可以筛选一段时间内的,可以按评论次数正序,倒序,总之都可以自己折腾。

代码其实网上有很多现成的,不过也不一定能完全符合自己。我这种不懂什么代码的,就只会修改别人的,使得符合自己使用。代码我也忘记是从哪里copy来的了,搜索了很多,一个个看,从一开始的自己折腾头像缓存代码的,调试很久无果,再后来用了头像缓存插件的,不知何故,很慢,故弃用。然后就剩下这个,头像直接读取远程服务器的,不缓存,速度反而快,还有木有节操啊?

反正就是启用了头像缓存插件,会慢到跟蜗牛一样!!!

一开始我用的是一个月,可是,发现数据很差,索性两个月得了,这不,效果如上~~~

读者墙地址,其实就是在留言板的页面上的,地址:http://itlu.org/guestbook/

下面贴个代码:

<?php
function getFriendWall(){
$period = time() - 2592000; // 单位: 秒, 时间范围: 30天
$db = Typecho_Db::get();
$sql = $db->select('COUNT(author) AS cnt', 'author', 'url', 'mail')
->from('table.comments')
->where('created > ?', $period )
->where('status = ?', 'approved')
->where('type = ?', 'comment')  
->where('authorId = ?', '0')
->where('mail != ?', 'itlobo@itlobo.com')   //排除自己上墙
->group('author')
->order('cnt', Typecho_Db::SORT_DESC)
->limit('26'); //读取几位用户的信息
$result = $db->fetchAll($sql);
$mostactive = "";
$my_array=array('www','0','1','2'); //我自定义的随机一个头像服务器,减少同时往一个服务器发起多次请求
if (count($result) > 0) {
foreach ($result as $value) {
$mostactive .= '<li><a href="' . $value['url'] . '" title="' . $value['author'] . ' : ' . $value['cnt'] . '次重要讲话" target="_blank" rel="nofollow">';
$mostactive .= '<img class="avatar" src="http://'.$my_array[rand(0,3)].'.gravatar.com/avatar/'.md5(strtolower($value['mail'])).'?s=32&d=&r=G" width="32" height="32" /></a></li>';
}
echo $mostactive;
}
}
?>

调用方法:

<?php echo getFriendWall();?>

查看 HTML php Typecho的相关文章

转载本站原创文章请注明:文章转自 灰狼IT路,链接: https://itlu.org/articles/1954.html

已有 24 条评论

  1. 不错不错,有了留言墙就有了动力,哈哈

    1. 我就知道有些人喜欢这个玩意。。。

  2. 稳妥妥的在第一O(∩_∩)O哈哈~

    1. 你的数据,基本是最近一个月的,但最近一个月,其他数据不好看,我给统计到两个月了

  3. 效果不错,高手

  4. 你这个防盗链真让人崩溃

    1. 又拍太强悍了,我去取消算了。。。

  5. 不错的东西哦。收藏先。。

  6. 蛮不错的,改天我也学着捣鼓捣鼓。

    1. 生命不息,折腾不断

  7. 哥们,我又来了,可以换链接了吗?

    1. 又?你来过很多次了?

  8. 自己博客也想搞一个这个读者墙,.谢谢博主了,回去试试 病历店WWW.binglidan.NET

  9. 啊哈,善用搜索,被我找到了,嘎嘎

  10. 因为不喜欢用插件,所以搜索读者墙实现方法的时候找到了这篇日志
    非常感谢博主分享!!!已经用上了

    1. 很荣幸可以帮助到你,话说你在日本的?

      1. 嗯是呀,目前在日本读书

      2. 在这里碰到小F~~~

  11. 回复 jason jason

    请问,这个是怎么搞,有点糊涂了,是把代码加入functions里面,之后调用?但是我试了试无效啊,我单独创建了一个独立页面,把调用代码放了进去,还是无效果,这样是那里出错了吗?

    1. 1、很长的代码放到function;2、调用代码必须是在源码里面编辑,而不是写到后台编辑器。

      1. 回复 jason jason

        把你的代码放到function里面,之后我把调用放在自定义页面里面

      2. 现在是搞清楚了没??

      3. 回复 jason jason

        没有哇,调用出来之后不显示

添加新评论