为WordPress增加Ctrl+Enter快捷回复功能
可能是朋友们在使用QQ进行聊天中已经养成了这样的习惯,在论坛和博客上进行评论时也想要这样的方便。国内目前的主流论坛程序,如Discuz!,都内置了这样的快捷回复;但遗憾的是,来自海外本地化不够彻底的WordPress程序却仍然不支持这一功能。
不过这并没有什么,实现这样的功能只需在WordPress主题中对应的文件里添加上一段JavaScript代码。不过因为不同的主题可能需要修改不同的地方,本文中,月夜以常见的几种情况来逐一为你做下介绍,希望能为朋友们,尤其是新手,提供一些帮助。
1.“提交评论”链接没有显示在按钮上的主题
有些主题中,“提交评论”的链接只是几个文字,没有显示在按钮上,比如大名鼎鼎的Pixeled主题,其“Leave comment(提交评论)”链接的显示方式如下:

在这种方式下,为主题添加Ctrl+Enter支持最为容易。首先在主题文件夹下comments.php文件的末端找到形如
</form>
</div>
<?php endif; ?>
的代码部分(注意:可能有些主题缺少三行中的一行,但通常会有其中两行),在如上代码的<?php endif; ?>之前(其实,这个位置很随意,也可以放到</form>之前,等等)添加上如下JavaScript代码:
<script type=”text/javascript”>
document.getElementById(“comment”).onkeydown = function (moz_ev)
{
var ev = null;
if (window.event){
ev = window.event;
}else{
ev = moz_ev;
}
if (ev != null && ev.ctrlKey && ev.keyCode == 13)
{
document.getElementById(“submit”).click();
}
}
</script>
随后,继续在comments.php文件中查找如下所示的代码行:
<p><input name=”submit” type=”submit” id=”submit” class=”submitbutton” tabindex=”5″ value=”Leave comment” />
当然,不同的主题可能会有所区别,但大致该行会包含有submit关键词。找到之后,可以看到在value值中是要显示的内容,将其修改为Leave comment(Ctrl+Enter)。接着,我们将comments.php文件保存,这样,我们就为该主题成功添加了Ctrl+Enter回复评论支持。
可以看出,对以不在按钮中的链接形式显示“提交评论”的主题,只需修改comments.php一个文件,即可方便地为我们的主题添加该功能;但对于在按钮上显示链接的主题,就不这么轻松了。
2.在按钮上显示“提交评论”链接的主题
很多主题,为了美观,将提交评论链接显示在了一个按钮上,比如月夜使用的由菠菜提供的默认主题:

如上图,这样的主题在未添加Ctrl+Enter字样时,按钮可能比较短;而添加上之后,按钮可能会被字符撑破,影响美观。所以,为了完整的做好这项工作,一方面,我们需要像1中那样,修改comments.php中的字符,添加JavaScript代码;另一方面,我们还需要修改按钮对应的CSS代码,使其显示美观。
首先按照1中的方法,在comments.php中找到如下代码:
<p id=”but_submit”><input name=”submit” type=”submit” id=”submit” tabindex=”5″ value=”提交评论(Ctrl+Enter)” />
将其中的提交评论修改为提交评论(Ctrl+Enter);接着在文件中的适当位置添加上1中的JavaScript代码,然后保存文件。
随后,我们来修改主题文件夹下style.css文件中与按钮对应的CSS代码,首先根据上面的代码找到but_submit和submit部分:
#but_submit{ margin-left:72px;}
#submit{ width:220px; height:32px; font-size:18px; font-weight:bold; color:#FFFFFF; letter-spacing:3px; border:1px solid #006666; background: url(images/icon.gif) repeat-x -2px -270px;}
接着修改其中控制按钮宽度的参数,如修改width:220px,以使其适合按钮上的字符。当然,有时为了美观,你可能还会修改其他地方,比如月夜就将上面代码中的font-weight:bold; 删掉了,因为粗体显示的英文看起来不太好。修改完成之后,将其保存,这样,我们就成功地为“提交评论”链接显示在按钮上的主题添加了Ctrl+Enter快捷键。
3.iNove等特殊主题
这类特殊主题可能比较多,月夜不可能面面俱到,在此,我们就以iNove为例,来讲述一下如何为iNove主题添加Ctrl+Enter评论回复快捷键。
iNove主题的提交评论链接同样显示在了按钮上:

和1、2中其他主题一样,首先还是在comments.php文件中的适当位置添加JavaScript代码。不过需要说明的是,因为iNove主题使用了语言文件,所以不能直接修改comments.php中如下代码的Submit Comment部分来为按钮添加Ctrl+Enter:
<input name=”submit” type=”submit” id=”submit” class=”button” tabindex=”5″ value=”<?php _e(‘Submit Comment’, ‘inove’); ?>” />
我们需要修改iNove主题的语言文件,按照前面iNove主题本地化的几点经验(二)中第10部分所述的方法,打开iNove主题文件夹下languages子文件夹中的zh_CN.po文件,将其中的Submit Comment项的对应汉语修改为“提交评论(Ctrl+Enter)”:

修改完毕之后,保存,然后用PO2MO工具,将修改后的po文件编译转换为mo文件,如此,即成功在iNove主题的提交评论按钮上添加了Ctrl+Enter字符。至此,我们成功为iNove主题回复评论添加了快捷键。如果是其他主题,则可能还需要修改CSS文件style.css,以防添加的文字撑破了按钮,但iNove主题的按钮好像打开了按钮宽度自适应文字长度的功能,从而使得我们无需修改CSS文件,也可保持按钮的美观。
在为你详细讲述了为WordPress主题添加Ctrl+Enter快捷回复功能之后,月夜最后还要特别说明一点,在以上所有修改代码文件的过程中,如果添加了汉字,都需要将文件的编码方式修改为UTF-8,不然,在网页中会出现乱码。
好了,今天,月夜通过以上三个例子,为你介绍了为WordPress主题添加Ctrl+Enter快捷回复的三种情况,希望能对朋友们有所帮助;当然,如果你有什么经验,欢迎留言与月夜分享;或者有什么问题,也欢迎留言说明。在此,月夜先谢谢朋友们。

2009/09/05 于 17:55:35
回复评论
2009/06/27 于 19:44:46
我和楼上一样都很屎
回复评论
admin 说:
六月 28th, 2009 at 下午 3:36
疯了,莫名其妙的感觉啊。
楼上那个应该是有人冒用帐号吧。
回复评论
2009/06/27 于 19:43:59
我是大笨蛋,大屎B。
回复评论
admin 说:
六月 28th, 2009 at 下午 3:36
囧rz,你怎么了啊?呵呵。
回复评论
wulinfo 说:
二月 24th, 2010 at 上午 1:14
Email被冒用的感觉,是一个问题
回复评论
2009/06/27 于 19:43:27
test
回复评论
2009/04/15 于 10:18:46
确实的主题再提交的时候替换了半角符号为全角符号,改改吧,或者使用源码高亮插件
回复评论
admin 说:
四月 15th, 2009 at 下午 8:06
又要用插件啊。。我都吓怕了。。哈哈。。我的博客装了8个插件了。。一想就郁闷。。
回复评论
2009/04/15 于 10:14:49
确实是的,你的代码没有做,只是你的源码显示上出现问题,一些符号出现问题例如这里:<input name=”submit” type=”submit” id=”submit” class=”button” tabindex=”5″ value=”” />
正确的是:<input name=”submit” type=”submit” id=”submit” class=”button” tabindex=”5″ value=”" />
你其中的字符都是使用了全角字符
回复评论
admin 说:
四月 15th, 2009 at 下午 8:05
嗯,呵呵。。不知道主题是怎么回事儿。。我自己暂时找不出问题。。以后有空了慢慢搞吧。。呵呵。。
回复评论
2009/04/15 于 00:58:47
博主你的源码都不正确
document.getElementById(“comment”).onkeydown = function (moz_ev)
{
var ev = null;
if (window.event){
ev = window.event;
}else{
ev = moz_ev;
}
if (ev != null && ev.ctrlKey && ev.keyCode == 13)
{
document.getElementById(“submit”).click();
}
}
回复评论
admin 说:
四月 15th, 2009 at 上午 9:19
咱两个的代码一样吧。。其实我也就是从网上找的。。
你说出错可能是你复制上面的代码,而我的主题会默认修改一些单引号或者双引号为中文状态下的字符。。
再说了。。如果出错,我的功能怎么实现呢?呵呵。。
谢谢朋友的细心。。我也看了你博客的那篇文章。。挺好。。
回复评论
2009/04/14 于 21:57:15
恩,我也添加了,呵呵
回复评论
admin 说:
四月 15th, 2009 at 上午 8:48
呵呵。。加上挺方便的。。可以提高回复量。。毕竟Ctrl+Enter一下一方面习惯。。一方面也是顺手就来的事儿。。
回复评论
2009/04/10 于 18:46:04
我好想学习你的知识,可惜英语我看不懂,让你见笑了。
回复评论
admin 说:
四月 10th, 2009 at 下午 7:37
呵呵,慢慢来吧。。不要着急。。
很多你会的东西,我们还都不会呢。。所谓闻道有先后,术业有专攻嘛。。
回复评论
2009/04/08 于 20:37:41
汗,直接判断按键事件然后发送submit()不是更好?
回复评论
admin 说:
四月 8th, 2009 at 下午 9:18
呵呵,这个代码貌似已经约定俗成了。。我不是太懂。。只知道大概。。
回复评论
2009/04/08 于 11:27:00
定期来学习~
回复评论
admin 说:
四月 8th, 2009 at 下午 2:28
多谢支持。。学习谈不上。。共同探讨吧。。呵呵。。。
回复评论
2009/04/07 于 20:59:30
今天刚刚加了这个功能,呵呵。
回复评论
admin 说:
四月 7th, 2009 at 下午 9:09
呵呵。。这个功能挺方便,貌似很多人都添加了。。。
回复评论
admin 说:
四月 7th, 2009 at 下午 9:11
不过刚刚试了下,发现你的Ctrl+Enter在我的IE7下没用啊。。按了三次都没反映。。只能点鼠标,请检查一下吧。。
回复评论