BB CODE按钮制作教程,以前想改个更方便的。不过真是的,JS文件不支持数据库读取,所以只能在这里单独发教程了。希望给整天需要按钮的人提供些帮助。
前提:请到系统设置中——Discuz!代码里面添加好代码再看下面的内容。
一、首先在发帖页面添加按钮
打开post_bbinsert.htm
找到:
- var alipay_normal_transport = "{lang post_discuzcode_alipay_normal_transport}";
复制代码
在下面增加按钮的变量函数:
var box_normal = " ";
var box_help = " ";
var box_normal_color = " ";
其中box是代码名称,你可以自定义,不要和现有的重复即可。
然后_normal的是点击按钮出现对话框的第一步的脚本名称,这个不能乱改。
_help是在帮助信息模式下提出的帮助信息,一般不能乱改。
当然有些按钮有更多步骤例如URL代码按钮,又有连接名,还有连接等等。这个时候增加_normal_color后面的语句。其中_color你可以自定义,表示第二,三步等等的脚本提示。
例如以前我做过的BOX代码按钮实例
var box_normal = "输入文字";
var box_help = "插入带框文本";
var box_normal_color = "输入颜色";
那么效果如下:
接着需要图片了,找到
- <a href="javascript:alipay()"><img src="{IMGDIR}/bb_alipay.gif" border="0" alt="{lang post_discuzcode_alipay}"></a>
复制代码
在下面加:
一条语句
<a href="javascript:alipay()"><img src="{IMGDIR}/bb_alipay.gif" border="0" alt="{lang post_discuzcode_alipay}"></a>
其中的alipay是DISCUZ代码名称,如URL、SIZE等等的。"{IMGDIR}/bb_alipay.gif"是按钮图片的相对路径(按钮不难找吧?),默认是在default目录的,自己对照着改。最后一段是你的按钮弹出窗口的标题了,可以自定义。
例如我的BOX代码按钮示例添加语句就是:
<a hidefocus=true href="javascript:box()"><img src="{IMGDIR}/bb_box.gif" border="0" alt="BOX代码"></a>
现在最基本的完工了,准备要写代码了。
二、添加BB CODE代码规律语法
打开:
bbcode.js
找到:
在上面加:
例如我制作的BOX代码按钮中需要添加下面的代码,下面我以这个为例子,一点点说明,注意看红色部分:
function box() {
if (helpmode){
alert(box_help);
} else if (getSelectedText()) {
color=prompt(box_normal_color,text_input);
var range = document.selection.createRange();
range.text = "[box="+color+"]" + range.text + "[/box]";
} else if (advmode) {
AddTxt="\r[box=]\r[/box]";
AddText(AddTxt);
} else {
txt=prompt(box_normal,text_input);
color=prompt(box_normal_color,text_input);
if(txt!=null) {
AddTxt="[box="+color+"]"+txt;
AddText(AddTxt);
AddText("[/box]");
}
}
}
box:不用多说了吧,你的代码的名称。
box_help:post_bbinsert.htm修改那步中,帮助信息的指定命令,对照着看。
box_normal_color:post_bbinsert.htm修改那步中,定义直接插入代码的指定命令
蓝色的BOX:一般就是你的带方括号的代码显示效果了,对照着里面的改,都要替换。应该能看出规律的。
接着就是你在post_bbinsert.htm修改那步中,定义的每一步的脚本命令。
同时要注意txt和color,这些是你的代码需要括住的字符,一般txt是指定文本,可以不用修改的。color等等根据你的需要增加,一般是在脚本输入窗口中输入的变量,如颜色、尺寸等等。希望大家能看懂。
如果一切顺利的话,现在你可以很方便的在发帖页面使用你的按钮了。有人也许希望部分按钮仅仅供某些人使用,这又要修改了,看下面。
三、控制按钮的使用权限:
打开post.php
找到:- if(empty($bbcodeoff) && !$allowhidecode && preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", preg_replace("/(\[code\].*\[\/code\])/is", '', $message))) {
- showmessage('post_hide_nopermission');
- }
复制代码
在下面加判断语句。
如我的BOX按钮判断可以加:if(!$adminid && preg_match("/\[box=.+?\].+?\[\/box\]/is", $message)) {
showmessage('抱歉!只有版主及以上才可使用BOX标签。请返回修改。');
}
其中的!$adminid是非管理组判断,稍微懂PHP的话,可以增加其它判断,如!$discuz_uid判断游客,也可以用groupid来判断用户组。
其中的preg_match("/\[box=.+?\].+?\[\/box\]/is",里面的BOX,老规矩,替换吧。替换什么。你应该比我清楚。当然要注意你的代码格式的规律。例如是[abc][/abc]格式的,[box=.+?\]要改成[abc\]。明白了吗?
到这里就可以全部完工了~应该不难吧。我的语言可能模糊了点,希望对大家有所帮助。 |