为了结合博客中匿名留言的功能做了个认证功能,虽然比较简单,但是还是比较有意思的,下面是前台的效果图:
后台的效果图:
添加一个这样的功能首先需要到数据库中的comments表添加一个字段(auth),然后再修改程序源码,需要改动的文件涉及到:
build\var\Widget\Comments\Archive.php
build\var\Widget\Comments\Edit.php
build\var\Widget\Abstract\Comments.php
build\admin\manage-comments.php
另外自备图标文件一个,准备工作做好之后就可以修改了(修改前请自行备份源文件)。
首先添加一个字段结构如下图:
修改Comments.php文件,修改成员函数select为:
public function select()
{
return $this->db->select('table.comments.coid', 'table.comments.cid', 'table.comments.author', 'table.comments.mail', 'table.comments.url', 'table.comments.ip',
'table.comments.authorId', 'table.comments.ownerId', 'table.comments.agent', 'table.comments.text', 'table.comments.type', 'table.comments.status', 'table.comments.parent', 'table.comments.created','table.comments.auth')
->from('table.comments');
}
然后添加一个成员函数___theAuth:
protected function ___theAuth()
{
$text = '';
if ($this->auth){
$text = '<img src="' . Typecho_Common::url('usr/uploads/avatarCache/auth.jpg', $this->options->siteUrl) . '" title="认证" />';
}
return $text;
}
修改Archive.php文件在大约109行之后插入:
<?php $this->theAuth();?>
这样前台显示部分就完成了,下面继续修改后台操作相关文件,修改Edit.php文件,在成员函数action中插入:
$this->on($this->request->is('do=auth'))->authComment();
添加成员函数authComment:
public function authComment()
{
$coid = $this->request->filter('int')->coid;
$commentSelect = $this->db->fetchRow($this->select()
->where('coid = ? and auth = 0', $coid)->limit(1), array($this, 'push'));
if ($commentSelect && $this->commentIsWriteable()) {
$this->db->query($this->db->update('table.comments')
->rows(array('auth' => 1))->where('coid = ?', $coid));
$this->widget('Widget_Notice')->set(_t('该评论已被认证'), NULL,'success');
}else{
$this->widget('Widget_Notice')->set(_t('该评论认证失败'), NULL,'notice');
}
$this->response->goBack();
}
修改manage-comments.php,大约在108行左右添加如下代码:
<?php if($comments->auth): ?>
<span class="weak"><?php _e('认证'); ?></span>
<?php else: ?>
<a href="<?php $options->index('/action/comments-edit?do=auth&coid=' . $comments->coid); ?>" class="ajax"><?php _e('认证'); ?></a>
<?php endif; ?>
|
最后可以自行测试一下,效果见本文的上一篇文章,另外可以继续扩展一下,现在这种认证只是单纯的管理来认证,如果有任何疑问可以留言。
补充一下,吧上述功能写成插件了,下载地址:点击下载, 需要注意的是使用需要在指定位置加入:
auth_Plugin::bgoutput($comments->coid);
auth_Plugin::fgoutput($comments->coid);
位置的话根据模板来定,由于该功能只是个人使用,所以不过多说明,如果需要使用请留言。
转载请注明: 本文《Typecho添加留言认证标识》来源于bstaint的博客
没有评论:
发表评论