首页 > wordpress > wordpress 表情不用插件的实现方式
2009六月26

wordpress 表情不用插件的实现方式

刚才在看昨天写的那几篇关于改版inove的js。忽然间想到一件事,那就是,无论是“回复”还是“引用”,都是把别人的内容放到评论框时面,然后提交即可。

想一下,wordpress的表情插件不也是这么干的吗?不过其加了一些自己的js代码以实现其功能。例如:custom-smilies插件。

这是一款很不错的wordpress表情插件。现在我把代码改了一下,充分利用现有代码来实现此功能。代码没有减少多少,只是把之放在了一个js文件中,这样至少看源代码我不会看到怪怪的不理解的js了。呵呵。

首先,我把所有的表情图标全部取出,放入image.html中,现在内容如下:

<img class="wp-smiley-select"  alt=":!:" src="http://www.xiaoxiaozi.com/wp-includes/images/smilies/icon_exclaim.gif"/>
<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里面,把表情段代码更改一下

<?php require_once('image.html');?>

这样,表情就相当于被我全写在正文页和留言板页面,至于把表情文件单拿出来的原因,很简单,方便以后维护

在style.css里面加入如下内容,使原custom-smilies的样式依旧起作用

img.wp-smiley-select {cursor: pointer;}

最后。开始完善js。我昨天说了,我把一些document.ready的函数全放在了ready.js里面,现在我将其拿出来了。

因为忽然感觉,让首页的js代码更少点,让所有js都起到应有的作用,否则就是浪费了

于是,我把昨天说的,显示隐藏用户信息段的代码也拿出来了,放在了comment.js里面

并加入了如下内容

jQuery(document).ready(function(){
    jQuery(".wp-smiley-select").click(function(){
        //当类名为wp-smiley-select的对象被点击时,把其alt属性的值传给addSmiley函数
        addSmiley(jQuery(this).attr('alt'),'comment');
    });
})

至于addSmiley函数,我只是把“回复”功能的代码复制了一遍,去掉一些没用的就变成了这样

function addSmiley(insertStr, commentBox)
{
    //判断这个对象存在,并且它是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。里面的内容直接用数组来写,发现自己刚才真的好傻啊。。唉。。

<?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/
版权所有 © 转载时必须以链接形式注明作者和原始出处!

37 Responses to “wordpress 表情不用插件的实现方式”

  1. #1 bolo 回复 | 引用 Post:2009-06-26 13:00

    厉害啊,牛人啊,有空我就扒下来

    [回复]

  2. #2 simaopig 回复 | 引用 Post:2009-06-26 13:02

    @bolo
    哈哈,随便乱写点,就是感觉有现成的js代码不用,反而要加入一些新的来实现同样的功能太浪费了些。呵呵。

    [回复]

  3. #3 随影 回复 | 引用 Post:2009-06-26 13:12

    啊 不错啊 !! 学习了 哈 !!

    [回复]

  4. #4 Showfom 回复 | 引用 Post:2009-06-26 13:30

    不错不错,自学成才了哦哈哈
    我也准备说说这个事情,不用插件而只是修改主题实现N多功能

    [回复]

  5. #5 simaopig 回复 | 引用 Post:2009-06-26 13:32

    @Showfom
    嗯。有一些事情不用插件是完全可以做到的。呵呵。 :roll:

    [回复]

  6. #6 Showfom 回复 | 引用 Post:2009-06-26 14:05

    @simaopig
    都是php,原理一样的,理论上所有的插件都可以直接集成到主题里。

    [回复]

  7. #7 simaopig 回复 | 引用 Post:2009-06-26 14:07

    @Showfom
    话是这么个理,不过还要考虑是否兼容啥的了。呵。

    插件就是一种共享精神。嗯。 :mrgreen:

    [回复]

  8. #8 Showfom 回复 | 引用 Post:2009-06-26 14:11

    @simaopig
    反正都是WordPress里用,把插件的代码复制到主题的functions.php里就可以在主题里直接用插件咯

    [回复]

  9. #9 Showfom 回复 | 引用 Post:2009-06-26 14:13

    还有哦,小小子,纠正你一个错误,WordPress 的拼写,W和P一定要大写的 哦哈哈

    [回复]

  10. #10 simaopig 回复 | 引用 Post:2009-06-26 14:19

    @Showfom
    呃,很少大写。。或者我有时写成WP。。。

    [回复]

  11. #11 Showfom 回复 | 引用 Post:2009-06-26 14:28

    @simaopig
    WordPress 是最正规的哦哈哈

    [回复]

  12. #12 Jutoy 回复 | 引用 Post:2009-06-26 15:15

    嘿嘿,不错的方法~~学了。

    [回复]

  13. #13 simaopig 回复 | 引用 Post:2009-06-26 15:52

    @Jutoy
    呼。上午傻死了。把img标签一个一个抄下来。。用firebug。

    下午才想起来有数组这么个东西。。唉。。

    [回复]

  14. #14 粥小卜 回复 | 引用 Post:2009-06-26 16:26

    我还是用插件吧~~

    [回复]

  15. #15 simaopig 回复 | 引用 Post:2009-06-26 16:28

    @粥小卜
    呵呵,随意。。随意就好。 :oops:

    [回复]

  16. #16 yueye 回复 | 引用 Post:2009-06-26 17:06

    :!: 我觉得自己真的太懒了,你都已经写得这么清楚了,我都懒得去改,还指望着你做把改好的插件发布出来呢…

    [回复]

  17. #17 simaopig 回复 | 引用 Post:2009-06-26 17:09

    @yueye
    呃。。我这么做就是为了不用插件的。。嗯。。

    [回复]

  18. #18 yueye 回复 | 引用 Post:2009-06-26 17:26

    @simaopig
    也弄了张小头像,蛮好玩的,我那边加载了二十多个插件了…可见我有多懒…

    [回复]

  19. #19 leecay 回复 | 引用 Post:2009-06-26 17:36

    我也用的是插件,学习了~

    [回复]

  20. #20 Lxhome 回复 | 引用 Post:2009-06-26 22:53

    我还没用上表情功能呢,还在犹豫要不要加上中

    [回复]

评论分页

发表评论

:wink: :twisted: :roll: :oops: :mrgreen: :lol: :idea: :evil: :cry: :arrow: :?: :-| :-x :-o :-P :-D :-? :) :( :!: 8-O 8)