Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[教程]BB CODE按钮简单制作教程 For 4.1

[复制链接]
sw08 发表于 2006-5-21 23:58:39 | 显示全部楼层 |阅读模式
BB CODE按钮制作教程,以前想改个更方便的。不过真是的,JS文件不支持数据库读取,所以只能在这里单独发教程了。希望给整天需要按钮的人提供些帮助。

前提:请到系统设置中——Discuz!代码里面添加好代码再看下面的内容。

一、首先在发帖页面添加按钮

打开post_bbinsert.htm
找到:

  1. 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 = "输入颜色";


那么效果如下:


接着需要图片了,找到
  1. <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
找到:
  1. function chsize(size) {
复制代码

在上面加:
例如我制作的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
找到:
  1. if(empty($bbcodeoff) && !$allowhidecode && preg_match("/\[hide=?\d*\].+?\[\/hide\]/is", preg_replace("/(\[code\].*\[\/code\])/is", '', $message))) {
  2.         showmessage('post_hide_nopermission');
  3. }
复制代码


在下面加判断语句。
如我的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\]。明白了吗?


到这里就可以全部完工了~应该不难吧。我的语言可能模糊了点,希望对大家有所帮助。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
xjbl 发表于 2006-5-22 00:01:37 | 显示全部楼层
难...非常的难!
回复

使用道具 举报

 楼主| sw08 发表于 2006-5-22 00:08:25 | 显示全部楼层
写得的确有点难,已经尽量用简单的语言了,不过对于掌握一些PHP知识的人来讲会简单些。
回复

使用道具 举报

amoshuang 发表于 2006-5-22 00:13:41 | 显示全部楼层
占位
回复

使用道具 举报

Seika 发表于 2006-5-22 00:15:13 | 显示全部楼层
sw08!..
回复

使用道具 举报

zjh 发表于 2006-5-22 00:17:06 | 显示全部楼层
前排
回复

使用道具 举报

终结者4 发表于 2006-5-22 00:17:07 | 显示全部楼层
不错不错!!!很好!!
回复

使用道具 举报

piyr11 发表于 2006-5-22 00:17:33 | 显示全部楼层
頂上去
回复

使用道具 举报

garuda 发表于 2006-5-22 08:24:18 | 显示全部楼层
学习中~
回复

使用道具 举报

m4mu 发表于 2006-5-22 08:32:23 | 显示全部楼层

这个要支持下……呵呵
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-25 18:45 , Processed in 0.041464 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表