刚才在看昨天写的那几篇关于改版inove的js。忽然间想到一件事,那就是,无论是“回复”还是“引用”,都是把别人的内容放到评论框时面,然后提交即可。
想一下,wordpress的表情插件不也是这么干的吗?不过其加了一些自己的js代码以实现其功能。例如:custom-smilies插件。
这是一款很不错的wordpress表情插件。现在我把代码改了一下,充分利用现有代码来实现此功能。代码没有减少多少,只是把之放在了一个js文件中,这样至少看源代码我不会看到怪怪的不理解的js了。呵呵。
首先,我把所有的表情图标全部取出,放入image.html中,现在内容如下:
<img class="wp-smiley-select" alt="8-O" src="http://www.xiaoxiaozi.com/wp-includes/images/smilies/icon_eek.gif"/>
<img class="wp-smiley-select" alt="8)" src="http://www.xiaoxiaozi.com/wp-includes/images/smilies/icon_cool.gif"/>
在comments.php和guestcomments.php里面,把表情段代码更改一下
这样,表情就相当于被我全写在正文页和留言板页面,至于把表情文件单拿出来的原因,很简单,方便以后维护
在style.css里面加入如下内容,使原custom-smilies的样式依旧起作用
最后。开始完善js。我昨天说了,我把一些document.ready的函数全放在了ready.js里面,现在我将其拿出来了。
因为忽然感觉,让首页的js代码更少点,让所有js都起到应有的作用,否则就是浪费了
于是,我把昨天说的,显示隐藏用户信息段的代码也拿出来了,放在了comment.js里面
并加入了如下内容
jQuery(".wp-smiley-select").click(function(){
//当类名为wp-smiley-select的对象被点击时,把其alt属性的值传给addSmiley函数
addSmiley(jQuery(this).attr('alt'),'comment');
});
})
至于addSmiley函数,我只是把“回复”功能的代码复制了一遍,去掉一些没用的就变成了这样
{
//判断这个对象存在,并且它是textarea类型
//就是下面的那个评论框
if($("#"+commentBox) && $("#"+commentBox).attr('type') == 'textarea') {
//借助私有变量field
field = $("#"+commentBox);
} else {
//没有评论框,弹窗,告诉你丫的这个评论框居然不存在
//敢晃点我就弹窗,哼
alert("The comment box does not exist!");
return false;
}
//注意,这里加的空格很重要,嗯。
replay_val = field.val().replace(/[\n]*$/g, "") + ' ' + insertStr + ' ';
field.val(replay_val);
//这里没说的了,一定要使评论框获得焦点,嗯。
field.focus();
}
于是,现在新代码只用了这么一个js文件,实现了,标签切换,显示隐藏用户信息,回复,引用,点击表情等功能。呵呵。。
呃,刚让我把image.html换成了image.php。里面的内容直接用数组来写,发现自己刚才真的好傻啊。。唉。。
//使用全局的表情符号数组,在wp-include/functions.php里面有定义
global $wpsmiliestrans;
//定义一个临时变量
$smiles = array();
//循环数组
foreach($wpsmiliestrans as $alt => $src_path)
{
//判断其在临时数组内是否已经存在,如果已经存在,说明functions.php里面有重复定义
//不过,别怕,这里面重复的我们只显示一条,嘿嘿
if(!in_array($src_path,$smiles))
{
$smiles[] = $src_path;
echo "\n<img class='wp-smiley-select' alt='".$alt."' src='http://www.xiaoxiaozi.com/wp-includes/images/smilies/".$src_path."' />\n";
}
}
?>
牛