最近想美化下typecho的评论功能,需要添加博主的认证功能和右侧最新评论不调取博主的,经过检索得到解决方案,将解决过程分享如下。
第一种方案
去掉Typecho最近评论列表中博主的评论:
在最新评论列表调用代码中添加参数ignoreAuthor=true,如显示博主评论的最近评论调用代码如下:
<?php $this->widget('Widget_Comments_Recent')->to($comments); ?>
将该代码替换为
<?php $this->widget('Widget_Comments_Recent','ignoreAuthor=true')->to($comments); ?>
保存文件即可。
typecho网站添加博主认证及等级
这个功能其实非常简单,通过判断评论者的邮箱及评论条数,输出对应的文字或图片。
老规矩直接上代码。在主题模板的functions.php文件里添加以下代码。
/** 评论者认证等级 */ function dengji($i){ $db=Typecho_Db::get(); $mail=$db->fetchAll($db->select(array('COUNT(cid)'=>'rbq'))->from('table.comments')->where('mail = ?', $i)->where('authorId = ?','0')); foreach ($mail as $sl){ $rbq=$sl['rbq'];} if($rbq<1){ echo '博主'; }elseif ($rbq<10 && $rbq>0) { echo 'VIP1'; }elseif ($rbq<20 && $rbq>=10) { echo 'VIP2'; }elseif ($rbq<40 && $rbq>=20) { echo 'VIP3'; }elseif ($rbq<80 && $rbq>=40) { echo 'VIP4'; }elseif ($rbq<100 && $rbq>=80) { echo 'VIP5'; }elseif ($rbq>=100) { echo 'SVIP'; } }
再打开主题评论模板comments.php文件,在评论者名字输出位置后加上如下代码。
<?php dengji($comments->mail);?>
第二种方案
<?php $me = md5(strtolower('279721075@qq.com')); //这里填入自己的邮箱 $boy = md5(strtolower('279721075@qq.com')); //这里填入好友的邮箱 $rz = md5(strtolower($comments->mail)); //用于判断邮箱 //博主样式 $str = '<span class="commentapprove" style="color: #FFF;padding: .1rem .25rem;font-size: .7rem;border-radius: .25rem;background-color:#1ECD97;" >博主</span>'; //好友样式 $str2 = '<span class="commentapprove" style="color: #FFF;padding: .1rem .25rem;font-size: .7rem;border-radius: .25rem;background-color:#1ECD97;" >好友</span>'; //开始判断 if($me==$rz){ echo $str; //如果条件成立则输出'博主'样式 }if($boy==$rz){ echo $str2; //如果条件成立则输出'好友'样式 } ?>
可以直接粘贴到评论页的作者后面进行使用
第三种方案
typecho有个函数是给文章作者的回复添加一个独一无二的class,我们可以利用这个class实现'博主'认证,或是其它。注意,此方法只适用于'博主',并不能自定义判断好友或其它。废话不多说,给文章作者回复加一个class的函数是
<?php echo $commentClass; ?>
如果你想让你的名称变成'红色'或是其它,那就好办了,直接
<span class="comment-author"><?php $comments->author(); ?></span>
在comment-author后面加入<?php echo $commentClass; ?>,注意,添加在双引号里面
如果你想展示'博主'的小标志,那可以单独插入一段
<span class="<?php echo $commentClass; ?>"></span>
添加相关Css,总之 自行发挥吧!
第四种方案
在functions.php中添加以下代码
/** * 评论者认证 * * @author ShingChi * @access public * @param str $email 评论者邮址 * @return viod */ function commentApprove($widget, $email = NULL) { if (empty($email)) return; //认证用户,再次添加认证用户邮箱 $handsome = array( 'xxx@126.com', 'xxx@qq.com', 'xxx@gmail.com' ); if ($widget->authorId == $widget->ownerId) { echo '<b class="vip author" title="很帅的博主"></b>'; } else if (in_array($email, $handsome)) { echo '<b class="vip user" title="认证贵宾"></b>'; } }
comments.php,在适当的位置添加以下代码
建议添加在作者名称后面〜
<?php commentApprove($comments, $comments->mail); ?>
记得对CSS进行美化〜
以下是小米笔记的CSS美化
#comments ol li .comment-author .vip { display: inline-block; width: 16px; height: 16px; margin-left: 2px; overflow: hidden; background: class=string>url(/static/img/v.png) no-repeat; vertical-align: text-top; } #comments ol li .comment-author b.user { background-position: -16px 0; }
喜欢的可以使用〜!
我没有使用第一种的方案,刚开始使用了,后来感觉等级太多余,就采用了第二种方法,根据邮箱判断博主和友人。
请教博主,我按照方案一中“typecho网站添加博主认证及等级”方法添加后其他用户等级也是“博主”,请问怎么修改?