Blogbus的评论系统有两点让我极为不爽: 一是评论过滤机制,导致我的留言经常莫名其妙的被拒绝发表(我连双脚都举起来保证我绝对没有发表任何有违和谐的信息);二是评论框不会在提交留言之后记录我的用户信息(Name, E-Mail, URL),每次留言我都得手动填写。这前一点不爽的谁也没办法,谁叫我们要和谐呢,后面这点的话我们可以通过在模板里加入一段javascript来保存评论者的cookie信息。我得先申明,对Javascript我也基本属于入门阶段,以下代码中很大程度参考自PPK的这篇文章Javascript - Cookies。
Blogbus最近改版一次后,新的模板系统不再允许修改评论框了,所有模板的评论框都是统一规范的,所以这个脚本适用于任何新版模板系统的任何模板,旧版的话我稍后补充。对于新版模板的话,你需要做的只是在header(前提是你先的启用自定义模板来修改)里加入以下代码:
<script type="text/javascript">
function setCookie(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = ";expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++) {
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function rememberFormInputs(form_id, prefix, days) {
if (!document.getElementById(form_id)) return false;
var form = document.getElementById(form_id);
var inputs = form.getElementsByTagName('input');
for (var i=0; i<inputs.length; i++) {
var input = inputs.item(i);
if (input.type == 'text') {
input.onblur = function() {
var name = this.name;
var value = this.value;
setCookie(prefix + name, value, days);
};
var old_value = getCookie(prefix + input.name);
if (old_value && old_value != '') {
input.value = old_value;
}
}
}
}
window.onload = function() {
rememberFormInputs('commentForm','input_',120); //保存用户信息120天,你可以设置为更久
}
</script>
对于使用旧版模板系统的,因为模板的不同,并不能保证所有留言框都有名为commentForm的ID,你需要修改自定义模板里的Comment.Form模块,其中有这么一句:
<form method="post" action="{/* ~ addcomment_url ~ */}" />
修改为:
<form method="post" action="{/* ~ addcomment_url ~ */}" id="commentForm" />
然后在header里的</head>之上照旧添加上面那段代码就是了。
至于那段代码什么意思,我也懒的解释了,懂一点javascript的都能看懂,不懂的知道怎么用就行了 :D Keep in mind, this is NOT a tutorial, but a little hack
更新: 刚写了个GreaseMonkey小脚本,如果你装了Firefox和这个插件的话,再装上我这个脚本程序,以后无论你所访问的blogbus博客有没有添加我上面的那段script,使用的是新模板系统还是旧的,都能通过这个脚本程序保存你的信息。
脚本下载地址 : rememberTheName.user.js