本教程适用handsome 3.3.1版本,不兼容4.1.0及以上版本

handsome默认的评论需要昵称和邮箱地址,方便使用gravatar的头像。然而由于种种原因,我们有时候并不希望用户留下个人信息(比如本站),虽然后台设置里没有这个选项,不过我们可以通过修改代码来实现。

1. 修改头像显示

既然用了匿名评论制,头像自然是要自己搞了,可以尝试随机头像,也可以像本站使用统一的匿名头像,这里只介绍统一头像的设置。
打开component/comments.php文件,找到第46行左右

1
2
3
<a class="pull-left thumb-sm">
……
</a>

中间的内容在新旧版本中可能不同,我们不管它,将中间的内容删除或注释,修改为

1
2
3
4
5
<?php if ($comments->authorId == $comments->ownerId): ?>
<img nogallery src="博主头像地址" class="avatar-40 photo img-circle" style="height:40px!important; width: 40px!important;">
<?php else: ?>
<img nogallery src="用户头像地址" class="avatar-40 photo img-circle" style="height:40px!important; width: 40px!important;">
<?php endif; ?>

清下缓存刷新,看看其他人的头像是不是都统一了?

2. 删除提交时的输入信息

既然是匿名,提交时也就只需要一个昵称了,还是在component/comments.php里面,将120行左右

1
2
3
4
5
6
7
8
9
10
11
<div class="comment-form-email form-group col-sm-6 col-md-4">
<label for="email"><?php _me("邮箱") ?>
<span class="required text-danger">*</span>
</label>
<input type="text" name="mail" id="mail" class="form-control" placeholder="<?php _me("邮箱 (必填,将保密)") ?>" value="<?php $this->remember('mail'); ?>" />
</div>

<div class="comment-form-url form-group col-sm-12 col-md-4">
<label for="url"><?php _me("地址") ?></label>
<input id="url" class="form-control" name="url" type="url" value="<?php $this->remember('url'); ?>" maxlength="200" placeholder="<?php _me("网站或博客") ?>">
</div>

这两个div给删掉就行了。

3. 后台设置

这个时候提交可能会出错,因为后台会对参数进行检查,我们需要去掉邮箱和网址的选项。
在后台设置-评论中去掉“必须填写邮箱”和“必须填写网址”前面的钩即可

4. 右侧最新评论的修改

在右侧可能有人会添加【最新评论】,由于我们去掉了头像,因此会出现显示问题,我们来统一一下:
打开component/sidebar.php,在28行左右

1
2
3
<a href="<?php $comments->permalink(); ?>" class="pull-left thumb-sm avatar m-r">
...
</a>

将中间的内容换成1中替换的代码即可(注意地址哦)

5. 打开ajax提交后的问题

如果你开启了ajax提交,这个时候可能会失败,因为这里的验证和typecho是分开的,所以我们也要修改:
3.3.1和之前的版本有不同,本文均以3.3.1版本为参照
打开js/ajax_comments.min.js
将30行-41行(左右)的

1
2
3
4
5
6
7
8
9
10
11
12
if ($(comment_form).find('#mail').val() == '') {
toastr.error(emailInfo);
msg_effect('#error');
return false;
}

var filter = /^[^@\s<&>]+@([a-z0-9]+\.)+[a-z]{2,4}$/i;
if (!filter.test($(comment_form).find('#mail').val())) {
toastr.error(email_legal_Info);
msg_effect('#error');
return false;
}

两个if语句全部删掉即可。

6. 独立页面评论(未测试

删除component/footer.php293行左右的

1
var mail = $("#mail").val();

1
2
3
4
5
if (mail == "") {
toastr.info("请填写邮箱");
$("#mail").focus();
return false;
}

如此,匿名评论就修改完成了,建议大家自行建立一个git仓库管理更新,以免每次都要重新修改。
由于是事后才写的文章,可能一些地方的修改没有写入教程,以本站的效果为准,如果有出入的请在下方评论,我会进行补充。