typecho 获取评论数最多的文章、以及最新的评论

来自:互联网
时间:2020-02-22
阅读:

这2天迁移了一下我的博客网站,非常感觉宁兄分享的echo模板,在搭建好网站之后,稍微研究了一下,写了一个脚本将之前的数据全部导入到新的网站上了。

| 今天对模板做了一个小的调整。

  • 增加了获取评论数最多的10篇文章。
  • 增加了获取最新10条评论,简单的写了一下样式,喜欢的可以复制。

以下是实现方法

functions.php文件增加一个获取评论数最多文章的方法:

function getHotComments($limit = 9){
    $db = Typecho_Db::get();
    $result = $db->fetchAll($db->select()->from('table.contents')
        ->where('status = ?','publish')
        ->where('type = ?', 'post')
        ->where('created <= unix_timestamp(now())', 'post')
        ->limit($limit)
        ->order('commentsNum', Typecho_Db::SORT_DESC)
    );
    if($result){
        $style1 = "padding:0 5px; background-color:red;text-align:center; border-radius:50%;color:#FFFFFF";
        $style2 = "padding:0 5px; background-color:#CCCCCC;text-align:center; border-radius:50%;color:#FFFFFF";
        foreach($result as $key => $val){
            $val = Typecho_Widget::widget('Widget_Abstract_Contents')->push($val);
            $post_title = htmlspecialchars($val['title']);
            $permalink = $val['permalink'];
            if($key < 3){
                echo '<li style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;"><i style="'.$style1.'">'.($key+1).'</i>  <a href="'.$permalink.'" title="'.$post_title.'" target="_blank">'.$post_title.'</a></li>';
            }else{
                echo '<li style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;"><i style="'.$style2.'">'.($key+1).'</i>  <a href="'.$permalink.'" title="'.$post_title.'" target="_blank">'.$post_title.'</a></li>';
            }

        }
    }
}

前端样式sidebar.php 文件加入调用方法和样式:

<div class="column">
        <h3 class="title-sidebar"><i class="layui-icon">&#xe756;</i> <?php _e('最热文章'); ?></h3>
        <ul class="layui-row layui-col-space5">
            <li style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;"><?php getHotComments('10');?></li>
        </ul>
    </div>

右侧增加获取最新的10条评论,在sidebar.php中添加如下代码即可:

<div class="column">
        <h3 class="title-sidebar"><i class="layui-icon">&#xe611;</i> <?php _e('最新评论'); ?></h3>
        <ul class="layui-row layui-col-space5">
           <?php
           $obj = $this->widget('Widget_Comments_Recent','ignoreAuthor=true','pageSize=10');
           if($obj->have()){
               while($obj->next()){
                   echo '<li style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;">';
                   echo '<div>';
                   echo '<img style="border-radius: 20px; float: left; padding-right:5px" src="http://q2.qlogo.cn/headimg_dl? bs='.$obj->mAIl.'&dst_uin='.$obj->mail.'&dst_uin='.$obj->mail.'&;dst_uin='.$obj->mail.'&spec=40&url_enc=0&referer=bu_interface&term_type=PC" />';
                   echo '<div style="float: left;width: 180px;padding-right: 5px"> <p>'. $obj->author.'</p> <p style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis;max-width: 180px; color: #999;"><a href="'.$obj->permalink.'">'. $obj->title.'</a></p></div>';
                   echo '</div>';

                   echo '<div style="clear: both"></div>';
                   echo '<p style="overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-size: 10px; color: #999; padding-left: 5px">评论:'.$obj->text.'</p>';
                   echo '</li>';
               }
           }
           ?>
        </ul>
    </div>

这里说明一下,typecho默认是使用Gravatar的头像,我将此改为了使用QQ头像,毕竟国内年轻人谁还能没个qq,但是有没有Gravatar就是另说了。具体更改方法可以获取留言方式获取。

返回顶部
顶部