wordpress 表情不用插件的实现方式
刚才在看昨天写的那几篇关于改版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";
}
}
?>
文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/06/26/968/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
厉害啊,牛人啊,有空我就扒下来
[回复]
@bolo
哈哈,随便乱写点,就是感觉有现成的js代码不用,反而要加入一些新的来实现同样的功能太浪费了些。呵呵。
[回复]
啊 不错啊 !! 学习了 哈 !!
[回复]
不错不错,自学成才了哦哈哈
我也准备说说这个事情,不用插件而只是修改主题实现N多功能
[回复]
@Showfom
嗯。有一些事情不用插件是完全可以做到的。呵呵。
[回复]
@simaopig
都是php,原理一样的,理论上所有的插件都可以直接集成到主题里。
[回复]
@Showfom
话是这么个理,不过还要考虑是否兼容啥的了。呵。
插件就是一种共享精神。嗯。
[回复]
@simaopig
反正都是WordPress里用,把插件的代码复制到主题的functions.php里就可以在主题里直接用插件咯
[回复]
还有哦,小小子,纠正你一个错误,WordPress 的拼写,W和P一定要大写的 哦哈哈
[回复]
@Showfom
呃,很少大写。。或者我有时写成WP。。。
[回复]
@simaopig
WordPress 是最正规的哦哈哈
[回复]
嘿嘿,不错的方法~~学了。
[回复]
@Jutoy
呼。上午傻死了。把img标签一个一个抄下来。。用firebug。
下午才想起来有数组这么个东西。。唉。。
[回复]
我还是用插件吧~~
[回复]
@粥小卜
呵呵,随意。。随意就好。
[回复]
[回复]
@yueye
呃。。我这么做就是为了不用插件的。。嗯。。
[回复]
@simaopig
也弄了张小头像,蛮好玩的,我那边加载了二十多个插件了…可见我有多懒…
[回复]
我也用的是插件,学习了~
[回复]
我还没用上表情功能呢,还在犹豫要不要加上中
[回复]