什么是”评论自动排第一“?

如图所示:

评论自动排第一

凡是在站内最新发表评论的用户会自动排到这里的第一位,并带有对方的网站链接。

该功能主要作用:促进评论氛围。


实现方法大致如下:

以下代码插入到functions.php:

function Autofirst(){
    $db = Typecho_Db::get();
    $query = $db->select()->from('table.comments')->where('authorId = ?','0')->order('coid',Typecho_Db::SORT_DESC)->limit(100);
    $result = $db->fetchAll($query);
    $arrUrl = array();
    $arrAuthor = array();
    foreach ($result as $value) {
        if($value["url"]!==null){
            array_push($arrUrl,$value["url"]);
            array_push($arrAuthor,$value["author"]);
        }
    }
    $su=array_filter(array_merge(array_unique($arrUrl)));
    $sa=array_filter(array_merge(array_unique($arrAuthor)));
    $num=0;
    for($i=0;$i<count(array_unique($su));$i++){
        if($su[$i]!=="" && $num<16){
            $num+=1;
            $db1 = Typecho_Db::get();
            $query1 = $db1->select()->from('table.comments')->where('url = ?',$su[$i])->order('coid',Typecho_Db::SORT_DESC)->limit(100);
            $result1 = $db1->fetchAll($query1);
            $arrAuthor1 = array();
            foreach ($result1 as $value) {
                    array_push($arrAuthor1,$value["author"]);
            }
            echo '<a href="'.$su[$i].'" rel="external nofollow" target="_blank">'.$arrAuthor1[0].'</a>';
        }
    }
}

调用方法:在模板中任意位置插入这行代码。

<?php Autofirst(100) ?>

bug概述:

  1. 在“typecho评论自动排第一”中会将”待审核的评论“也显示出来,还有垃圾评论中的评论者也会自动排到第一。

两种解决方案:
1.关闭评论审核。
2.改进代码。

这算不算是bug,就得看你有没有开评论审核了,总之我没开评论审核,所以对我来说不算bug,日后有时间的话我看看能不能修复它。

标签: Typecho

已有 11 条评论

  1. 和读者墙或者和最近回复有啥区别?直接套用读者墙或者最新回复如何?最新回复是多了显示评论内容和链接跳转评论所在页最新回复的在先也就就是排第一差不多!注释掉评论内容,跳转评论页改成填写评论者的主页!读者墙(有个读者墙插件)就是把评论最多改成最新回复排序在先!

    1. 都差不多,最近回复是按时间顺序排列,读者墙是按照留言数量排列,之前我用的就是你说的这种,“每评论一次就排到本栏第一位”。

  2. 低调 低调

    如果你没有填写网站地址就不会显示在上面的。。。算bug吗?

    1. 想显示就,没有网址填充自己这个模块所在页面地址()!和原来读者墙差不多一个套路!

    2. 这个不算,原本就是设计给留下网址的评论者的,给他们留下一条不追随的外链,促进交流

  3. 博主有Wordpress版本的评论自动排第一的CSS吗?

    1. 木有哦,自己写吧~

  4. 可以把最近评论那个模块的代码挖出来用

    1. 嗯,这个方法应该可行

  5. 没之前的主题好看,这个太素了

    1. 是啊,没了华丽的外表,没那么吸引人了。

添加新评论