教程
Typecho代码实现评论@小尾巴
1693

Typecho代码实现评论@小尾巴,简单来说就是子级评论回复父级评论时候,在嵌套基础上,为了更好的让评论一目了然,增加 @ 小尾巴

文本教程

function.php 文件里面加上这个函数,管他什么主题,扔最后面就行。

    function get_comment_at($coid){
    $db   = Typecho_Db::get();
    $prow = $db->fetchRow($db->select('parent,status')->from('table.comments')
        ->where('coid = ?', $coid));//当前评论
    $mail = "";
    $parent = @$prow['parent'];
    if ($parent != "0") {//子评论
        $arow = $db->fetchRow($db->select('author,status,mail')->from('table.comments')
            ->where('coid = ?', $parent));//查询该条评论的父评论的信息
        @$author = @$arow['author'];//作者名称
        $mail = @$arow['mail'];
        if(@$author && $arow['status'] == "approved"){//父评论作者存在且父评论已经审核通过
            if (@$prow['status'] == "waiting"){
                echo '<p class="commentReview">(评论正在审核中)</p>';
            }
            echo '<a href="#comment-' . $parent . '">@' . $author . '</a>';
        }else{//父评论作者不存在或者父评论没有审核通过
            if (@$prow['status'] == "waiting"){
                echo '<p class="commentReview">(评论正在审核中)</p>';
            }else{
                echo '';
            }
        }

    } else {//母评论,无需输出锚点链接
        if (@$prow['status'] == "waiting"){
            echo '<p class="commentReview">(评论正在审核中)</p>';
        }else{
            echo '';
        }
    }
    }

调用方法

我们先去typecho官网看看有关评论相关变量,变量 <?php $comments->content(); ?> 为评论内容

前面我们加的函数也判断了父类评论和子类评论的关系,父类评论不加小尾巴,子类评论加小尾巴,所以我们直接在评论输出内容的地方前面放上小尾巴变量就行了,一般在 commentes.php 主题文件中,放在前面即可。

小尾巴变量

<?php $parentMail = get_comment_at($comments->coid)?><?php echo $parentMail;?>

测试效果

刷新看看以前回复内容

回复的人和回复内容不在一行怎么办?
在主题的css中.comment-content p中加上一条 display: inline就可以了。

结语

感谢访问强仔博客,希望本文对你有所帮助


  • 上一篇
  • 下一篇
  • 添加评论
    评论(3)
    Sun
    Sun

    我博客评论模块早就有这玩意

    强仔
    叶开楗

    那年花开,你我相遇,爱在那个有你的世界

    welcome to qiangzai blog