腾讯云服务器优惠活动华纳云香港服务器

实现每评论一次自动排第一功能(Typecho版)

在我第一次进入 boke112 的时候,就被它首页的“每评论一次就会自动排在本栏目和对应博客导航分类页面第一位”深深吸引住了。然后我也想弄出这样一个功能,但是 boke112 分享的《WordPress 博客导航实现最新评论自动排第一功能》是 WordPress 教程,而我使用的是 Typecho,所以只能找人帮我写,但写出来的结果并不理想,有很多 bug。

第一次做这个功能是两个月前的事情,群里的一位小哥帮我写的,那时候的 bug 很多,经常出现网址错误、名字错误和空白等。现在周末闲着没事干,就把这个功能修复了一下,虽然这代码看起来就这么几十行,但我花了很多精力在上面,我没学过 PHP,所以每个函数都是查百度查了很久才查出来的。(被迫学习。)现在我又忘了这些函数是什么意思了,不管了,反正能用就行。

这是我在本博客里使用的效果:

实现每评论一次自动排第一功能(Typecho版)-第1张-boke112百科(boke112.com)

我感觉这效果还不错,好东西自然不能独享,正所谓独乐乐不如众乐乐,这次就拿出来和大家分享一下吧。

下面是主要代码(插入到 functions.php 中):

  1. function Autofirst(){
  2.     $db = Typecho_Db::get();
  3.     $query = $db->select()->from(‘table.comments’)->where(‘authorId = ?’,’0′)->order(‘coid’,Typecho_Db::SORT_DESC)->limit(100);
  4.     $result = $db->fetchAll($query);
  5.     $arrUrl = array();
  6.     $arrAuthor = array();
  7.     foreach ($result as $value) {
  8.         if($value[“url”]!==null){
  9.             array_push($arrUrl,$value[“url”]);
  10.             array_push($arrAuthor,$value[“author”]);
  11.         }
  12.     }
  13.     $su=array_filter(array_merge(array_unique($arrUrl)));
  14.     $sa=array_filter(array_merge(array_unique($arrAuthor)));
  15.     $num=0;
  16.     for($i=0;$i<count(array_unique($su));$i++){
  17.         if($su[$i]!==“” && $num<16){
  18.             $num+=1;
  19.             $db1 = Typecho_Db::get();
  20.             $query1 = $db1->select()->from(‘table.comments’)->where(‘url = ?’,$su[$i])->order(‘coid’,Typecho_Db::SORT_DESC)->limit(100);
  21.             $result1 = $db1->fetchAll($query1);
  22.             $arrAuthor1 = array();
  23.             foreach ($result1 as $value) {
  24.                     array_push($arrAuthor1,$value[“author”]);
  25.             }
  26.             echo ‘<a href=“‘.$su[$i].'” rel=“external nofollow” class=“item col-lg-3 col-md-3 visible-lg visible-md” target=“_blank”><i class=“glyphicon glyphicon-leaf”></i> ‘.$arrAuthor1[0].'</a>’;
  27.         }
  28.     }
  29. }

这是调用代码和 css(如果你跟我一样,用的是 handsome 主题,就直接插入到 index.php 的”</header>”下面):

  1. <div class=“row autofirst visible-lg visible-md”>
  2. <p>
  3. <i class=“glyphicon glyphicon-th”></i> 每评论一次就会自动排在本栏目第一位
  4. </p>
  5.     <?php Autofirst(100) ?>
  6. </div>
  7. <style>
  8. .autofirst{
  9.     margin:20px 20px 5px 20px;
  10.     padding:10px;
  11.     box-shadow: 0 1px 8px rgba(0,0,0,0.12), 0 1px 8px rgba(0,0,0,0.24);
  12.     background-color:white;
  13.     border-radius:3px;
  14. }.item{
  15.     padding:5px 0px;
  16. }
  17. </style>

上面的这两段代码中的 HTML 和 CSS 我是按照 handsome 主题制定的,使用其他主题的同学可以自己把 HTML 和 css 改一下。

温馨提示:

提示内容以上代码仅适用于 Typecho,如果想要获取 Typecho 版本的最新样式请移步《“评论自动排第一”新样式,handsome 专用》。如果是 WordPress 的,请参考文章《WordPress 博客导航实现最新评论自动排第一功能》。

赞 (0) 打赏
版权声明:本文为转载文章,来源于 梁兴健个人博客 ,版权归原作者所有!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请联系我们,确认后马上更正或删除,谢谢!
wu