[教学]为 VBB 添加新的 vB Code

本帖由 wiwjxx2009-06-25 发布。版面名称:vBulletin 设计讨论

  1. wiwjxx

    wiwjxx 普通会员

    一种是在管理控制面板里添加。这种方法的好处是直观方便,稍懂 HTML 即可,但是最多只能有一个控制选项,例如[ url=*** ]yyy[ /url ],这里的 *** 就是 url 代码唯一的控制选项。但是有时候一个控制选项并不足够,例如我要贴一个可以自定义长宽的 Flash,通过管理控制面板里添加的 vB Code 就无能为力了。

    另一种方法就是直接修改程序文件。这种方法灵活多变,可以定义任意多个控制选项,并且还可以对控制选项也进行控制。当然这种修改需要一定的 PHP 编程基础,特别是要了解 PHP 的正则表达式。关于编程这里就不再多说了,把已经做好的修改放上来吧(以下修改均在 vB 2.03 下进行,其他版本的请自己测试,估计大同小异):[隐藏内容]

    查找 admin/functions.php:

    return censortext($bbcode);


    前面加上:

    // start new vbcodes added by cx
    $searcharray2 = array(
    "/(\[shadow])(.*)(\[\/shadow])/siU",
    "/(\[glow])(.*)(\[\/glow])/siU",
    "/(\[fly])(.*)(\[\/fly])/siU",
    "/(\[move])(.*)(\[\/move])/siU",
    "/(\[)(swf)(])(www\.)([^\"]*)(\[\/swf\])/siU",
    "/(\[)(swf)(])([^\"]*)(\[\/swf\])/siU",
    "/(\[)(swf=)([1-6]\d\d)(,)([1-9]\d\d)(])(www\.)([^\"]*)(\[\/swf\])/siU",
    "/(\[)(swf=)([1-6]\d\d)(,)([1-9]\d\d)(])([^\"]*)(\[\/swf\])/siU",
    "/(\[)(iframe)(])(www\.)([^\"]*)(\[\/iframe\])/siU",
    "/(\[)(iframe)(])([^\"]*)(\[\/iframe\])/siU",
    "/(\[)(iframe=)([1-6]\d\d)(,)([1-9]\d\d)(])(www\.)([^\"]*)(\[\/iframe\])/siU",
    "/(\[)(iframe=)([1-6]\d\d)(,)([1-9]\d\d)(])([^\"]*)(\[\/iframe\])/siU",
    );

    $replacearray2 = array(
    "\\2",
    "\\2",
    "\\2",
    "\\2",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    "",
    );

    $bbcode = preg_replace($searcharray2, $replacearray2, $bbcode);
    // end new vbcodes added by cx


    其中 4、8、3等等代表显示上面的第几个括号内出现的字符。
    这一段代码加入了几个新的 vB Code:[ shadow ](阴影)、[ glow ](光晕)、[ fly ](飞行)、[ move ](移动)、[ swf ](Flash)、[iframe](iFrame)。其中后两个都可以有两个控制选项,并且都加上了一定的限制。

    例如,贴一个 Flash:[ swf=***,yyy]zzzzzzzzzzzzzzz[ /swf],其中的 *** 代表 Flash 的宽度,yyy 代表高度;*** 的范围是 100~699,yyy 是 100~999,超过这个范围 vB Code 将不会解析。当然省略 =***,yyy 就是缺省的设置 400x300。[ iframe=***,yyy]zzzzzzzzzzzzzzz[ /iframe] 也是一样的道理。

    如果你熟悉 PHP 正则表达式,按照这个方法可以添加更多的 vB Code。当然也不能太多了以免影响速度。

    好了,现在已经成功为 vB2 论坛添加了几个新的 vB Code,手动输入就可以工作了。如果我们还想更方便,就像那些原来的 vB Code 的快捷按钮一样,应该怎么办呢?

    当然要修改你的 vB2 模板 vbcode_buttons,其实也不难,具体怎么改就不多说了,按照原来的结构添加新的内容即可。我现在用的 vbcode_buttons 模板如下,因为加了好几个,所以按钮的布局也变了:




    #codebuttons input { font-family: verdana, arial, helvetica; font-size: 11px; }
    #codebuttons select { font-family: verdana, arial, helvetica; font-size: 11px; }
    .smilieTable { border-width: 2px; border-style: outset; }



    vB 代码

    [帮助]
    普通模式

    增强模式

























    关闭当前标签


    关闭所有标签









    字号
    ----
    $vbcode_sizebits

    字体$vbcode_fontbits


    颜色$vbcode_colorbits









    至此新加的 vB Code 及其快捷按钮都已经可以工作了,大功告成了吗?且慢!还差一点点--还要在那个小小帮助窗口里为新的代码加上解释。。。打开你的 vB 目录下的 vbcode_language.js 文件,查找:

    // ERROR MESSAGES


    在前面加上:

    flash_text = "插入 Flash 文档";
    iframe_text = "插入 iFrame 网页调用";
    hide_text = "插入隐藏内容,别人需要回复才能看到";
    move_text = "使输入的内容产生移动效果";
    fly_text = "使输入的内容产生飞行效果";
    shadow_text = "使输入的文字产生阴影效果";
    glow_text = "使输入的文字产生光晕效果";


    现在终于完成啦!

    作者:CCXX
     
    已获得 逍遥浪子Xiao.T一人天 的点赞。
  2. 一人天

    一人天 普通会员

    太棒了,就是少图片了,应该上传几个演示
     
  3. wiwjxx

    wiwjxx 普通会员

    经过测试 对于我这种新手 可行性 不大 因为 这个是 适用于 2.X 版本的

    3.X 版本的 不知道谁能做一个出来
     
  4. yuner

    yuner 普通会员

    3.x 的 bb代码很多啊 大家 都分享分享 bb代码 也是很强大的
     
正在加载...