Blog评论功能再次改进

474 views 二月 04, 10 by Timothy

自从实现了Ajax的评论后,俺还是对评论部分有点不太满意,于是又开始拿评论开刀了。

1.首先想到的,是评论没有分页显示的功能,如果评论数量太多,会把页面拖得很长,在google搜索了一下,原来WordPress原生已经支持评论分页的功能了,所以一不做二不休,继续改动。
其实改动很简单,打开模板的comments.php,在类似wp_list_comments();列出评论的代码后面,加入下面的代码即可:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
	// 如果用户在后台选择要显示评论分页
	if (get_option('page_comments'))
	{
		// 获取评论分页的 HTML
		$comment_pages = paginate_comments_links('echo=0');
		// 如果评论分页的 HTML 不为空, 显示导航式分页
		if ($comment_pages)
		{
?>
 
<div id="commentnavi">
		&lt;?php echo $comment_pages; ?&gt;</div>
 
 
&lt;?php
		}
	}
?&gt;

2. 实现Enter+Ctrl快捷回复,这个比较简单,用jQuery实现,正好这两天也在学jQuery,就当练练手吧。为了增加代码可读性,方便以后维护,将这部分自定义的jQuery代码放在单独的js文件中:timothy.js

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
$(document).ready(function(){
 
    //Ctrl+Enter for fast submit
    $("#comment").keydown(
    	function(event){
        	if(event.ctrlKey &amp;&amp; event.keyCode == 13)
        	{
            		$("#submit").click();
        	}
    	});
});

代码比较简单,检测评论框的keydown时间,并判断是否同时按下了Ctrl键和Enter键,如果条件成立,则直接出发提交按钮的点击事件。将此部分js代码上传,并在header.php引入此脚本文件,效果立马就有了。这下同学们可以通过Ctrl+Enter快捷提交评论了。不过后来发现一个问题,这种用Ctrl+Enter快捷提交的评论,不会触发Ajax评论的效果,后来仔细找了找原因,发现Ajax评论的jQuery脚本中,并没有绑定提交按钮的点击事件,而是绑定的整个Form的submit事件,所以把刚才的脚本小小修改一下即可:

?View Code JAVASCRIPT
1
2
3
4
5
6
7
8
9
10
11
$(document).ready(function(){
 
    //Ctrl+Enter for fast submit
    $("#comment").keydown(
    	function(event){
        	if(event.ctrlKey &amp;&amp; event.keyCode == 13)
        	{
            		$("#commentform").submit();
        	}
    	});
});

这下就搞定了,支持Ctrl+Enter提交的Ajax评论,呵呵。

3.这个修改源自Zww同学的提议,在每条评论中增加”回复”按钮,原以为我的皮肤不支持嵌套评论的,尝试着在WordPress的设置项中,把嵌套评论给Enable了,这样的话,每条评论就自动有了个回复按钮。接下来,想实现点击回复的时候,自动把评论的同学的名字填入到评论框中,也就是类似 @XXX: 的形式。大体思路是通过jQuery来实现,绑定这些回复按钮的click事件,获取评论的同学的名称,设置到评论框中。其实Zww同学早就实现了这样的功能(前去围观),所以jQuery也可以偷师过来了:

?View Code JAVASCRIPT
1
2
3
4
5
    $(".reply").click(
	function(){
		var name = $(this).prevAll().find("cite:first").text();
		$("#comment").text("@"+name+":").focus();
	});

同样,放在$(document).ready里面即可。这次改动,俺意外的发现,原来我的皮肤支持嵌套评论……或许是加入了Ajax评论组件的原因,嘿嘿。

此文很菜,没啥技术含量, 算是学习jQuery的一点心得吧,前路茫茫,吾将继续折腾下去……

Blog再次改动–启用Ajax评论

375 views 二月 01, 10 by Timothy

我用的这个皮肤有点旧,很多东西都不支持,但是又舍不得换掉,于是留下了折腾的余地,生命在于折腾嘛。看着Zww同学和久酷同学的Blog,都支持Ajax无页面刷新评论,心里也痒痒的。好像WordPress最新的版本,已经支持Ajax评论了,但是又不知道怎么搞。在Google网上一阵乱搜,找到个不错的解决办法,一个老外同学的一篇文章,照着一步一步改下来,还真实现了,除心里一阵狂喜之外,心里还小有成就感……其实网页也是我的弱项,接下来需要一边学jQuery,一边在现有的皮肤上动刀,再美化美化,呵呵。
最后,推荐下老外同学的添加Ajax评论的文章:
http://zeo.unic.net.my/wordpress-ajax-commenting-revisited/

=========================威武的分割线=====================

updated: 2010.02.03

上面的文章较老,后来发现添加Ajax后,有bug,于是按照Zww同学推荐的方法,找到另一篇指导文章,捣鼓了半天, 总算搞定了。脚本中由于需要访问一些元素,但是由于我的皮肤本身不支持嵌套评论,所以也把.js脚本小改了一下,屏蔽掉部分东西。这篇文章非常不错,强烈推荐下:

http://willin.heliohost.org/?p=1271

新增博客插件–Comment Info Detector

349 views 十二月 29, 09 by Timothy

一个很有趣的插件,能显示博客评论者的相关信息,并以图标的方式显示出来,包括评论者IP所在的国家、浏览器、操作系统,这种统计还是比较有意思,也相当直观,看图吧:

CommentInfoDetector

安装过程也很方便,后台直接启用,然后小小设置一下,就OK了。

插件官方地址:http://hieudt.info/wp-plugins/comment-info-detector/