这个功能的文章可以追溯到2015年了,最先应该由【boke112导航】发布,一直不温不火。直到2018年,这个功能又焕发了新的生命力,得到很多博主的喜爱。在外部搜索引擎排名优化短期难见成效的情况下,博客之间的互访成为很多新站点重要的流量来源之一。

实现的原理非常简单,通过SQL查询语句,查询数据库中的评论表,将最新评论的访客昵称及网址显示在第一位。这个功能增加了大家互动的积极性,为大家抱团取暖提供了便利。

但是这个功能只有Wordpress平台的版本,直到【梁兴健博客】将其迁移到了Typecho平台,这个功能才得以在Typecho平台和我们见面。

wordpress平台版本:《WordPress博客导航实现最新评论自动排第一功能》——112导航
typecho平台版本:《原创:实现每评论一次自动排第一功能(Typecho版)》——梁兴健博客
typecho平台版本(新):《“评论自动排第一”新样式,handsome专用》——梁兴健博客


本文记录的方法来自梁兴健《评论自动排第一”新样式,handsome专用》,用来实现handsome主题首页评论自动排第一的功能。

具体步骤:

1、将下面的代码复制粘贴到handsome主题的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<8){
        $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 '<div class="col-lg-3 col-md-3 item"><a href="'.$su[$i].'" rel="external nofollow" class="btn btn-default btn-block overflow" target="_blank">'.$arrAuthor1[0].'</a></div>';
    }
  }        
}

其中,functions里的“num<8”的8就是用来定义显示数量,推荐为4的倍数。

2、将下面CSS代码复制粘贴到Typecho后台“控制台>外观>设置外观>开发者设置>自定义CSS”中。

 .autofirst1 .item{
    padding:5px 10px
  }
.overflow{
      overflow:hidden;
    white-space: nowrap;
    word-wrap: normal;
  }
.autofirst1{
    padding:10px 20px
  }

如果需要让按钮圆角显示,如果添加下面样式:

.item a{border-radius:10px}

3、将下面HTML代码添加到handsome主题目录的index.php文件中。

<div class="row visible-lg visible-md">
<div class="col-lg-12">
<div class="panel panel-default ggg">
    <div class="panel-heading">
        <i class="glyphicon glyphicon-th"></i> 每评论一次就会自动排在本栏目第一位
    </div>
    <div class="panel-body row autofirst1">
        <?php Autofirst(100) ?>
    </div>
</div>
</div>
</div>

大概位置在</headr>标签后,可参考下图:
Typecho comments are automatically ranked first.png

感谢你长得这么好看,还看我的笔记!全文完!

Last modification:July 8th, 2020 at 12:28 am
If you think my article is useful to you, please feel free to appreciate