在我第一次进入boke112的时候,就被它首页的“每评论一次就会自动排在本栏目和对应博客导航分类页面第一位”深深吸引住了。

boke112每评论一次就会自动排在本栏目和对应博客导航分类页面第一位

然后我也想弄出这样一个功能,于是我就找人帮我写,但写出来的结果并不理想,有很多bug。

实现每评论一次自动排第一功能

第一次做这个功能是两个月前的事情,群里的一位小哥帮我写的,那时候的bug很多,经常出现网址错误、名字错误和空白等。

现在周末闲着没事干,就把这个功能修复了一下,虽然这代码看起来就这么几十行,但我花了很多精力在上面,我没学过PHP,所以每个函数都是查百度查了很久才查出来的。(被迫学习。。)

现在我又忘了这些函数是什么意思了,不管了,反正能用就行。

::aru:shy::

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

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

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

下面是主要代码(插入到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" class="item col-lg-3 col-md-3 visible-lg visible-md" target="_blank"><i class="glyphicon glyphicon-leaf"></i> '.$arrAuthor1[0].'</a>';
        }
    }
}

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

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

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

以上代码仅适用于Typecho。

wordpress版本传送门:https://boke112.com/1074.html

最新版的:

https://liangxingjian.com/archives/271

标签: none

已有 25 条评论

  1. 原来原创在这里!赞一个先!OωO

    1. 谢谢支持!|´・ω・)ノ

  2. 这博客折腾的越来越不像样了,真是每次进来都有意外的惊喜...

    1. 每次不是换主题就是加功能 ::aru:crying::

  3. 这代码,除了CSS能明白几个是干嘛,其他什么鬼东西 ::aru:crying::

    1. ::aru:nomatter:: 其实我也不怎么看的懂,反正能用就行

  4. 这次折腾的有成就感啊 ::aru:shy::

    1. 对这次折腾挺满足的 ::aru:smile::

  5. 这个功能新增也不错,会弄了多少有个成就感。

    1. 快乐正是来自于成就感 ::aru:shy2::

  6. 其实就是最新访客,加一个判断是否填写有链接地址,有就显示,没有就不显示。有这个功能感觉可以让用户更乐意评论。

    1. 对我这种小白,做出这个功能还是挺难的。这个功能可以让评论积极点是没错 ::aru:smile:: 。

  7. 这个骚操作终于给你给搞出来了 ::aru:confuse::

    1. 瞎搞着就出来 ::aru:cryingface::

  8. 功能不错,我就是不知道我拿过去放哪儿,不想放弃幻灯片OωO

    1. 看个人喜好吧,幻灯片比这个好看多了

  9. 研究了一下,代码和主题有冲突,再调试看看

    1. 这个不适用于wordpress,wordpress版本传送门:https://boke112.com/1074.html

      1. 试完才发现是Typecho版!!!

  10. 有幸访问到贵站,“百万链”期待你的加入!

  11. ::aru:cryingface:: 感觉会引起更多人参与讨论吧,毕竟相当于一个免费广告位了

    1. 这会让评论积极一点 ::aru:shy::

  12. 挺好的

  13. 我一直想问你代码,但知道你是花了很大的精力做的所以不好意思开口,现在你公布出来了,我就收藏了,谢谢。

    1. 不客气|´・ω・)ノ,这个的确花了很多精力,当时两个人一起想排序问题,就是找不出解决办法,帮我写代码的那位小哥都生气了,无奈~现在我逻辑思维略微好一点了,就刚好就想到了修复排序的办法,然后我就按照自己的思路查PHP的函数,表达式,语句,一个一个套进去才弄好的。 ::aru:cryingface::

添加新评论