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
你这。。。没有针对成分吧。。。
谁叫你丫非要取个连按几次shift的名字,我就从来不觉得烦~
那段东西直接加到header任何地方吗?还有最后那句话,保存用户信息120天,你可以设置为更久,是要删掉的吧?
我这帮朋友们不都blogbus么,你这留一个,他这留一个的,重复劳动多痛苦…
加header里任何位置都行,那句中文解释没必要删掉,
//
表示注释,不会被读取的。你这代码一加我整个blog就只能显示上面灰色的一条。。。还好后台没关,一删掉就正常了,可把我吓死了,您老还是自己输把~在我那写个p就行了
代码应该加到</head>之上,应该是没问题的。
我现在用我自己写的那个GreaseMonkey的脚本,进谁的blog都不要再填信息了 :D
我说你就不能顺带提下更新的脚本往哪去?明知道对这东西一窍不通。。。对greasemonkey也是。。。
我第一个blog好像就开在blogbus