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

W

wiwjxx

普通会员
2008-07-01
309
42
#1
一种是在管理控制面板里添加。这种方法的好处是直观方便,稍懂 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
 
W

wiwjxx

普通会员
2008-07-01
309
42
#3
经过测试 对于我这种新手 可行性 不大 因为 这个是 适用于 2.X 版本的

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

yuner

普通会员
2009-07-03
4
0
#4
3.x 的 bb代码很多啊 大家 都分享分享 bb代码 也是很强大的
 
顶部 底部