这个功能的文章可以追溯到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