emlog的评论列表里没有对评论者进行区分,比如博主,作者,普通游客,至于用户就不必要了,把他放在游客里即可。

我们需要的是区分当前文章的作者,以及博客主人的评论。

以下是博主笑忘书折腾出来的判断方法,其实原理比较简单,直接判断昵称是否和作者或博主相同即可。

1. 首先需要获取文章作者id到评论列表函数里。打开 echo_log.php,找到评论获取函数:

<?php blog_comments($comments); ?>

如果不是官方模板,可能不一定完全相同,不过没关系,我们只是在其后面加入一个文章作者id:

<?php blog_comments($comments,$author); ?>

保存即可。

2.继续打开module.php文件,找到评论列表函数,加进一个$uid,如下:

<?php
//blog:评论列表
function blog_comments($comments,$uid)
…………
再找到:
$comment['poster'] = $comment['url'] ? ……
由于上面这句会将评论者昵称重新定义成带链接等的内容,不适合我们拿来判断昵称是否一致,所以我们要在其前面加入:
$comname = $comment['poster'];
这个获取的是评论者昵称文本。接着可以找到 <?php echo $comment['poster']; ?> 即评论者昵称显示位置,在其后面加:
<?php global $CACHE;$user_cache = $CACHE->readCache('user'); $bzname = $user_cache[1]['name']; if($comname == $bzname): ?>(博主)<?php elseif($comname == $user_cache[$uid]['name']): ?>(作者)<?php endif;?>
这个是先判断是不是博主的昵称,如果是就显示博主;不是的话,再判断是不是作者(不是博主发表的文章)。

当然你也可以定义其他内容样式,自己发挥好了。

慢着,我们只是完成了一级评论而已,后面的子评论还没设置。

3.继续找到评论列表函数最后的,同样增加一个$uid

<?php blog_comments_children($comments, $comment['children'],$uid); ?>
再找到子评论列表函数(一般在评论列表函数后面),重复第二步的操作即可。


全文完