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就可以了。
结语
感谢访问强仔博客,希望本文对你有所帮助
我博客评论模块早就有这玩意
我在人家那教程看到的,加了一下
那年花开,你我相遇,爱在那个有你的世界