Discuz! X 插件开发手册
- 格式:doc
- 大小:49.50 KB
- 文档页数:9
目录+文件篇:| -- admin.php 管理员入口| -- api.php 接口文件| -- category.php 分类入口| -- cp.php 个人资料设置入口| -- crossdomain.xml FLASH跨域传输文件| -- favicon.ico 系统icon图标| -- forum.php 广场入口| -- group.php 群组入口| -- home.php 空间入口| -- index.php 首页入口| -- ivite.php 邀请处理文件| -- member.php 用户处理文件| -- misc.php 杂项处理文件| -- plugin.php 插件处理文件| -- portal.php 站点首页入口同 index.php| -- robots.txt 搜索引擎蜘蛛限制配置文件| -- search.php 搜索入口文件| -- userapp.php 用户应用、游戏、漫游入口文件| -- static 系统用到的图片包| -- template 系统总模板目录| -- uc_client ucenter客户端程序| -- uc_server FULL版本中ucenter服务端| -- api 接口文件夹| -- api -- db| -- api -- db -- dbbak.php 接口调用中用到的数据库备份文件,内涵数据库类| -- api -- javascript -- advertisemen.php 广告调用接口| -- api -- javascript -- javascript.php js调用接口| -- api -- manyou 漫游平台调用接口文件夹| -- api -- manyou -- class 漫游接口中需要用到的类的文件夹| -- api -- manyou -- Manyou.php 漫游接口文件| -- api -- manyou -- my.php 继承与manyou.php,用来执行更新用户资料的借口文件| -- api -- mobile 移动手机设备接口文件夹,这个文件夹中包含了大量的用户手机浏览器客户端显示的模板和执行文件。
discuz使用与插件开发使用开源产品:能后台配置的尽量后台配置其实写插件其次修改JS/css再其次修改模板再其次修改PHP文件最后修改数据库discuz安装与后台功能介绍1:论坛开启与关闭, 全局-->站点信息当论坛临时维护时,可以时间关闭站点,2: 论坛开放与关闭注册:3: 修改注册链接,防止机器人注册(几乎无用)默认的注册链接如右图可以不修改php文件,并自定义注册链接.全局-->注册访问控制-->注册地址注册链接变为4: 验证用户的email全局--->用户注册与访问--->新用户注册验证选择email验证.5:如果4中,选择email验证,还需要在”站长-->邮件设置”中设置发邮件的方式1:用sendmail发送(在Linux下,且正常支持sendmail)2:用smtp协议发送,要求有1个支持smtp的邮箱,如126,163等老牌邮箱.配置用户名及密码,及可用来发邮件6: 禁用词过滤内容--->词语过滤7: 用户发表的链接控制要从2个方面来控制1: 用户--->用户级--->基本设置-->站外URL解析2: 但是用户发的任何链接,都无法解析如果我们用合法站点,比如百度网盘,或华为网盘等,允许发送. 全局-->注册与访问控制-->访问控制discuz的DIY功能diy是通过图形化的配置,让不懂程序的使用者,也能动态调用系统的相关数据. 如:最新帖, 热门帖, 最新文章等等.DIY功能里,有框架和模块框架的作用是把页面或div,拆成指定块, 如长度1:3的2个div,把页面拆成两部分. 而且框架是可以嵌套的,有可能做出比较复杂的框架效果来.模块:模块的作用是取出指定的信息---如论坛帖子模块,可以取出最新帖,热门帖等等.静态模块,可以允许用户填写自定义的HTML内容.一句话:框架是为了布局用的.模块是为了取数据用的并设定帖子模块的相关参数.保存后: 论坛首页即出现如下调用效果.tab切换标签我们选择tab框架,插入已有框架中.再把普通模块拖入标签中,起一个标签就可以了.默认的标签切换效果需要鼠标点击, 如果要变成鼠标划过,切换的效果, 可以编辑tab标签,选择”切换类型”discuz插件开发插件开发的意义:插件是可插拔的, 即可以在不改动源码的情况下, 增改论坛的功能.以后升级论坛的过程中,升级过程不受影响.比如,论坛有member.php,为了达到防机器人注册的功能1: 直接修改member.php,达到目的.2: 添加插件来完成.然后----论坛程序升级, member.php被官方最新的member.php代替.那么:对于1: 之前的改动,要再做一遍.对于2: 插件接口的API往往不会变,所以只需要把插件再注册一遍就可以用.discuz插件的运行原理:大多数系统的插件运行原理都类似, 即在程序指定处,留下钩子. 开发人员按照要求(比如按与钩子有关联的函数名) 来写程序. 那么钩子会运行用户的预留函数唱歌带包烟假设PHP是一个服务员,从连接数据库--->输出模板这一路上,有几个关键点,如”唱歌”,”买烟”,服务员经过这几点,会看这个点有没有数据或函数,有则调用.继而影响最终的输出结果.discuz插件的位置及文件格式位置: 在系统的source/plugin/目录下,一个插件一个目录.如下图:是一个简单而典型的插件:包括:描述插件的XML文件插件.class.phpXML文件是用来描述插件的名称,作者,位置,类名等等.PHP文件,是插件的具体运行页面.第一个插件开发直接把一个简单的插件(如上面的soso_smiles) ,复制一份,改名, 如下打开XML文件,其中name是插件名称identifier 是插件的标识,不能重复.directory 是指插件目录然后在weibo.class.php中,写入如下类此时这个类还是空的,没有具体作用,但是,一个插件的壳已经完成了. 管理员进入后台,查看应用,插件,看到如下信息则说明,我们的微博插件的壳已经正常了.接下来,再开发具体的插件功能确认插件在哪个.php文件上的哪个位置发挥作用根据forum.php的’forum’,再写一个子类根据位置,找到hook名称根据Hook名称,我们再写方法, 注意,方法名与hook点的关系.方法的返回值,就会出现在hook点上.嵌入点列表:/library/plug/plugin/plugin_hook.htm允许用户输出参数的插件我们需要在XML里,加上var 定义title: 输入框前的提示variable:变量名type: text ,普通文本框如何在插件的类里,如weibo.class.php中访问该插件变量?答: discuz的网站信息,配置信息,栏目信息,用户信息,缓存信息,插件信息.... 都被初始化一个普通全局变量$_G中.因此,我们可以通过$_G来获取插件的相关变量值.具体语法是$_G[‘cache’][‘plugin’][插件名][变量名]以weibo插件来说, $_G[‘cache’][‘plugin’][‘weibo’][‘weiboid’];discuz开发者模式, 自动创建XML打开config_global.php修改$_config['plugindeveloper'] = 1;如果没有,直接加上这一句作业:自行开发一个防机器人注册插件.思路:机器人插件一般是用HTTP协议提交,不通过浏览器.我们写一个插件,让用户点击提交瞬间,触发JS,动态创建一个hidden表单域及其值. 后台检测此值.如果是机器人,没通过浏览器,没有这个值.。
DiscuzX3.2教程插件制作的基本思路是:(初学者适用)1.形成插件思路2.制作插件界面3.构架程序模块4.搭建存储数据5.填充功能语句6.检查应用错误7.完善插件功能前言:为方便互联网数万Discuz!爱好者,更加深入了解Discuz!软件,本人在熟悉Discuz!过程中,顺便将个人经验写给大家。
本贴内容由本人定期更新。
本贴只介绍Discuz!中部分技术点,本贴紧属个人观点,不足之处,请各位多多指教,在下先此谢过!。
“Discuz!”在下文中简称“DZ”。
要弄DZ二次开发,必须至少具备如下技能:1)能够理很好理解MVC构架的原理(虽然DZ不是MVC架构的)2)扎实的PHP基础,熟悉结构化程序,OOP程序的写法及应用3)熟悉MYSQL就用,掌握SQL语言,懂SQL优化者更佳4)熟悉使用Discuz!的各项功能一)Discuz!的文件系统目录注:想搞DZ开发,就得弄懂DZ中每个文件的功能。
a) Admin:后台管理功能模块b) Api:DZ系统与其它系统之间接口程序c) Archiver:DZ中,用以搜索引擎优化的无图版d) Attachments:DZ中,用户上传附件的存放目录e) Customavatars:DZ中,用户自定义头像的目录f) Forumdata:DZ缓存数据的存放目录g) Images:DZ模板中的图片存放目录h) Include:DZ常用函数库,基本功能模块目录i) Ipdata:DZ统计IP来路用的数据j) Plugins:DZ插件信息的存放目录k) Templates:DZ模板文件的存放目录l) Wap:DZ无线,Wap程序处理目录二)必须记熟Discuz!数据库设计的每个表的功能,每个表中每个字段的功能。
关于DZ数据库设计文档,请参阅DZ相关的项目文档(请从本贴附件中下载)三)Discuz!的流程控制a) 后台流程控:DZ后台所有的功能,均需要注册到admincp.php文件,每个功能都至少有一个或一个以上的Action(动作),在admincp.php中,可以定义Action的执行权限,分别为:“admin==1”管理员,或“admin==2 || admin==3”超级版主和版主,每个Action对应一个脚本文件,脚本文件的命名为action.inc.php(*.inc.php),并存放在admin目录下,如执行:admincp.php?action=dodo,相当于执行admin目录下的dodo.inc.php文件b) 前台流程控制:前台的流程控制比较简单:流程是自由的,如:首页:index.php会员注册:register.php;会员登录:logging.php发贴程序:post.php会员信息:member.php论坛内容:forumdisplay.php查看贴子:member.php…大部分功能,此处不一一列出…c) DZ根目下的config.inc.php属于整个DZ系统的配置文件四)Discuz!的数据处理过程a) DZ对mysql的数据库操作处理全部封装在dbstuff(db_mysql.class.php)类中b) 所在的外部数据均通过“daddslashes()”初步过滤,然后再过滤,再根据需要处理五)Discuz!的显示控制(网站多样式风格输出)a) 显示层就是大家通常所看到的网站风格了。
康盛discuzX运营手册1. 介绍康盛discuzX是一个基于PHP和MySQL的论坛程序。
它拥有丰富的功能和优秀的性能,并且具有易用的界面和良好的扩展性。
本手册旨在帮助您了解如何运营和管理discuzX论坛,以确保您的网站安全、稳定且具有良好的用户体验。
2. 安装和配置康盛discuzX安装和配置非常简单,只需要按照官方文档的步骤进行即可。
安装完成后,您需要进行一些基本的配置,如设置网站名称、描述和关键字、配置邮件服务器、开启伪静态等。
同时,您还可以根据自己的需求配置插件和主题。
配置完成后,您的论坛即可正常运行。
3. 用户管理论坛成功与否,离不开良好的用户管理。
在康盛discuzX中,您可以使用多种方式管理用户,包括审核注册、IP禁止、用户组设置等。
通过这些方式,您可以控制用户的行为,并确保用户遵守论坛规则。
同时,您还可以设置用户信誉度和发帖权限,以提高论坛的质量和活跃度。
4. 内容管理康盛discuzX是一个内容丰富的论坛程序,您可以发布各种类型的内容,包括文字、图片、视频等。
在内容管理方面,您需要考虑一些关键问题,如主题设置、版块分类、帖子管理等。
另外,您还需要配置标签、积分、勋章等,以提高用户发帖量和贡献度。
5. 数据备份和恢复康盛discuzX中的数据非常重要,因此我们建议在进行任何操作之前先备份数据。
数据备份的步骤非常简单,您可以通过管理后台或phpMyAdmin等工具进行备份。
如果您的论坛出现了问题,您可以使用备份文件进行数据恢复。
6. 安全和维护康盛discuzX是一个相对安全的论坛程序,但是还是存在一些安全问题。
为了保证您的论坛安全稳定,我们建议您及时更新最新版的discuzX程序和插件,同时注意密码安全、文件权限、SQL注入等安全问题。
另外,如果您需要升级论坛程序,我们也需要考虑一些维护问题,如停机维护、下载升级包等。
7. 总结在本手册中,我们介绍了康盛discuzX的基本运营手册,包括安装和配置、用户管理、内容管理、数据备份和恢复、安全和维护等方面。
discuz使用手册
Discuz使用手册如下:
1. 安装:在电脑上下载安装lamp环境,可以phpstudy,然后安装。
下载discuz,这个要到官方论坛,专门有下载专区。
把discuz的upload复制
到phpstudy的网站目录。
在浏览器地址栏中输入localhost,进行安装就
可以了,都是自动的。
2. 删除回帖:在帖子页面,选中回帖右下方的多选框,点击“管理选项”中的“删除回帖”或者帖子底部的“删除”,输入操作理由,点击提交即可。
3. 移动主题:在版块页面或者帖子页面都可以操作,版块页面可以进行批量主题移动,帖子页面只能移动当前帖子。
操作页面针对移动方式有两个选项:移动主题、移动主题并在原来的版块中保留转向。
移动主题:主题直接被移动到目标版块。
保留转向:主题被移动到目标版块后在当前版块继续保留一个帖子链接,点击该链接则进入被移动到目标版块的帖子。
转向链接的帖子前面会有一个“移动”标志,并且帖子状态为锁定状态。
4. 屏蔽帖子:单帖屏蔽功能是一个超级实用的功能,它可以在版主认为用户发布的某个帖子不符合版规或内容有待商榷时使用。
希望以上信息能帮到您,如有疑问可查阅官网或咨询专业人士。
discuz使用手册一、简介Discuz是一款开源的论坛软件,拥有强大的功能和易于使用的界面。
本使用手册将详细介绍Discuz的各项功能和操作方法,帮助用户快速上手并充分发挥其优势。
二、安装与设置1. 安装步骤a. 下载Discuz安装包并解压;b. 创建数据库,并将Discuz安装包中的文件上传至服务器;c. 运行安装向导,填写数据库信息和管理员设置;d. 完成安装并进行相关配置。
2. 基本设置a. 登录后台管理中心;b. 配置站点名称、URL、时区等基本信息;c. 设定用户注册和登录方式;d. 设置论坛的版块和权限。
三、论坛管理1. 用户管理a. 注册与审核:设定用户注册流程及审核方式;b. 用户组管理:创建不同的用户组以区分权限和管理;c. 用户权限设置:设定不同用户组的权限。
2. 板块管理a. 创建板块:设置论坛的版块及其属性;b. 板块权限:为不同用户组设定各自的板块权限;c. 主题分类:创建主题分类以便用户更好地进行讨论。
四、主题与回复1. 发表主题a. 在指定板块中点击发布新主题;b. 编写主题标题和内容;c. 标记关键字和添加附件(如果需要);d. 发布主题并等待其他用户回复。
2. 回复主题a. 在主题页面中点击回复按钮;b. 编写回复内容;c. 可选的附带图片、链接等;d. 提交回复并等待其他用户互动。
五、权限管理1. 用户权限a. 默认用户组权限:管理新注册用户的权限;b. 特殊用户组权限:特定用户组的特殊权限设置;c. 用户自定义权限:用户能够自行设置的权限。
2. 板块权限a. 读权限:设置用户可以阅读哪些板块;b. 发帖权限:设定用户是否能够在特定板块发布主题;c. 回帖权限:控制用户是否可以回复特定板块的主题。
六、其他功能1. 积分和勋章:设定用户获得积分和勋章的规则;2. 用户签名:设置用户在论坛中的个性签名;3. 搜索功能:快速搜索论坛中的主题和回复;4. 草稿箱:自动保存用户未发布的内容;5. 私信和@功能:用户之间的私密交流;6. 管理员工具:包括数据备份、论坛开关等。
Discuz! X1.5 插件开发手册2010/9/1 By Monkey插件设计您在开始进行社区插件的设计之前,有必要了解一下我们所推荐的插件设计方式,更好的规范性和兼容性,将使得您设计的插件受到更多使用者的欢迎,对于程序员而言,也有助于形成良好的编码习惯,实现自身能力的提升。
如果您有意编写 Discuz! 社区插件,请按照先后顺序仔细阅读本文档。
准备工作开启Disucz Debug模式1、下载Discuz Debug补丁包,并解压。
点我下载1、上传文件到论坛根目录2、在 config/config_global.php 中添加 $_config['debug'] = n;n = 1,debug 标准模式n = 2,debug E_ALL模式n = 字串,当前 $_GET、$_POST 等 REQUEST 参数中包含 debug=字串时显示插件实现流程开始编写社区插件,您应当首先对插件实现的流程有一个大致的了解,以下是我们推荐的插件编写流程:o熟练使用 Discuz! 社区系统后,对希望完善或补充的个性化功能进行评估,进而提出插件的功能需求。
o对插件做一个概括性的设计,例如:需要使用什么菜单、什么参数,配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。
o阅读本文档并在系统设置中实际体验 Discuz! 插件接口所实现的功用,例如:您的插件应当如何设计才能良好的挂接到社区系统中来。
插件接口能够实现哪些功能、不能实现哪些功能,插件为此而需要做的优化、改造和取舍。
o编写相应程序代码和模板语句,实现所需的功能并进行代码测试、兼容性测试和代码改进。
o如果需要公开您的插件,可以用插件导出的方式,将插件配置信息导出到一个 XML 文件中,连同相应的程序和模板文件一同打包。
同时,编写一个适合新手的插件的说明书也是必不可少的,其中包括:插件适用的 Discuz! 版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等等。
相信有不少人热衷于基于修改原有系统文件所做的插件,当然了解程序文件功能是最重要的,下面我把Discuz! X2.0主要的程序文件功能说一下。
我只是整理,不是自己原创编辑的,所有权归原创作者所有哦。
Tips:Q:针对说明的文件是?A:我只基于原版文件对upload目录中基本的程序文件(php,htm,js,除了极少数无关紧要的)进行解释,其余文件(如图片文件),一般不做说明Q:某些目录下空白的index.htm是用来做什么的?A:用来防止列目录的Q:文件名颜色和标识的意义是?A:粗体表示这个文件比较重要,除非你非常了解其功能,否则修改错误会导致全站瘫痪;斜体表示这个文件已被加密,一般情况下修改没有意义;下划线表示这个文件一般99.99%的修改是用不上的,了解即可绿色的是函数库文件,蓝色的是常量调用文件,红色的是系统全局核心文件Q:文件名命名有什么特别规律吗?A:有的,一般inc的是调用文件,func是函数库文件,class是库文件,lng的是语言包文件,了解这些后缀能快速掌握文件功能。
Q:我看了你的帖子,可是我还是看不懂文件内是什么意思啊?A:这个嘛,还是要有一定基础了,一般掌握SQL,PHP和Htm你就可以去改文件做你要的功能了,这个不是我的任务了哦。
一般来说,如果随便指个地方,你能在1分钟内说出大概位置及所在的文件,那么你基本就算合格了。
不过我个人认为最重要的还是多改多读,在实践中提高自己的能力下面开始了,请看你的upload目录里面的文件,表述的格式依次为文件名,功能描述等等先从根目录开始,根目录文件一般都是入口,即执行具体功能的代码一般不在这些文件中,而是在其调用的文件中admin.php 系统站点管理入口文件api.php Discuz!合作应用入口文件(例如漫游、支付宝什么的都走这里)connect.php QQ互联入口文件cp.php 应用入口文件crossdomain.xml 数据交互文件,如果在里面定义其它站点的地址,那么这两个不同站点就可以交互数据favicon.ico图标文件,显示在浏览器的标题栏forum.php 论坛入口文件group.php 群组入口文件home.php 家园入口文件index.php 功能与portal.php基本相同member.php 用户信息入口文件misc.php 网站用户常用操作入口文件,例如像评分、收藏等功能都是走这个文件的plugin.php 插件入口文件portal.php 门户入口文件robots.txt在这个文件中加上具体的地址,可以防止被搜索蜘蛛检索到search.php 搜索功能入口程序userapp.php 用户应用入口程序API目录中的文件主要是和Discuz!进行合作的商家的应用程序,一般不要也无需修改,这里不多说明。
DISCUZx模板开发流程第一步第二步:页面分析第三步css公共样式修改模块央视修改四:模板标签$_G 保留了Discuz! 中所有的预处置数据缓存能够专门好的提高程序的性能,一些配置数据没必要每次都查询数据库,只要在修改了的时候更新下缓存即可。
Discuz! 中所有的缓存保留在$_G[cache] 中百度体会:jingyan.baidu方式/步骤(1) 全局变量系统篇$_G['uid'] => 当前登录UID$_G['username'] => 当前登录用户名$_G['adminid'] => 当前登录ID治理组ID$_G['groupid'] => 当前登录ID用户组ID$_G['cookie'] => 客户端cookie$_G['formhash'] => 当前登录ID的【FORMHASH】要紧用于表单提交$_G['timestamp'] => 当前活动时刻$_G['starttime'] => 1317042440.3242$_G['clientip'] => 当前访问者IP地址$_G['referer'] => 当前请求的地址,要紧用户表单提交$_G['charset'] => 程序编码$_G['PHP_SELF'] => 当前访问页面的相对地址$_G['siteurl'] => 程序访问地址$_G['siteroot'] => 程序所在域名的相对目录$_G['fid'] => 当前版块id【主题列表页、帖子页】显现$_G['tid'] => 当前帖子ID【帖子页】显现$_G['basescript'] => 当前页面所在频道$_G['basefilename'] => 当前页面php文件名$_G['staticurl'] => 程序附件目录$_G['mod'] => 当前页面的MOD值【例如:forum.php?mod=xxx】$_G['inajax'] => 当前ajax请求的值【无-0 有-1】$_G['page'] => 当前分页ID$_G['tpp'] => 当前分页每页显示数量$_G['keywords'] => 当前页面关键词$_G['description'] => 当前页面介绍$_G['timenow'] => Array([time] => 2020-9-26 21:07 当前效劳器时刻[offset] => +8 当前效劳器时区)$_G['config'] => Array($_G['config'][db] => Array($_G['config'][db][1] => Array($_G['config'][db][1][dbhost] => localhost 数据库连接地址 $_G['config'][db][1][dbuser] => root 数据库用户名$_G['config'][db][1][dbpw] => 123456 数据库密码$_G['config'][db][1][dbcharset] => utf8 数据库编码$_G['config'][db][1][pconnect] => 0$_G['config'][db][1][dbname] => dxutf 数据库名$_G['config'][db][1][tablepre] => pre_ 数据表前缀)))(2) 全局后台各项设置篇$_G['setting'][sitename] => 全局-站点信息-网站名称$_G['setting'][siteurl] => 全局-站点信息-网站URL$_G['setting'][regname] => 全局-注册访问-注册-注册地址$_G['setting'][reglinkname] => 全局-注册访问-注册-注册链接文字$_G['setting'][regverify] => 全局-注册访问-注册-新用户注册验证$_G['setting'][icp] => 全局-站点信息-网站备案信息代码$_G['setting'][imagelib] => 全局-上传设置-大体设置-图片处置库类型$_G['setting'][extcredits] => 积分情形自行打印$_G['setting'][creditsformula] => 全局-积分设置-大体设置-总积分计算公式$_G['setting'][cacheindexlife] => 全局-性能优化-论坛页面缓存设置-缓存论坛首页有效期$_G['setting'][cachethreaddir] => 全局-性能优化-论坛页面缓存设置-缓存目录$_G['setting'][cachethreadlife] => 全局-性能优化-论坛页面缓存设置-缓存帖子有效期$_G['setting'][bbrulestxt] => 全局-注册访问-注册-网站效劳条款$_G['setting'][bbname] => 全局-站点信息-站点名称$_G['setting'][attachurl] => 全局-上传设置-大体设置-本地附件URL地址$_G['setting'][attachdir] => 全局-上传设置-大体设置-本地附件保留位置$_G['setting'][anonymoustext] => 界面-界面设置-全局-匿名用户的昵称$_G['setting'][threadsticky] => 界面-界面设置-主题列表-置顶主题的标识$_G['setting'][defaultindex] => 默许首页文件名forum.php$_G['setting'][verify] => 用户-认证设置$_G['setting'][rewriterule] => 后台伪静态规那么情形$_G['setting'][ucenterurl] => UCenter地址$_G['setting'][plugins] => 后台插件设置与启用情形$_G['setting'][navlogos] => 后台界面设置-导航设置-内置导航的logo组$_G['setting'][navmn] => 后台设置的导航情形,要紧用于导航判定$_G['setting'][navs] => 页头导航数组,可参考此数组进行页头导航重写$_G['setting'][footernavs] => 页尾导航$_G['setting'][spacenavs] => 家园模块左侧导航$_G['setting'][mynavs] => 页头导航右边快捷导航按钮内容$_G['setting'][topnavs] => 页头顶部导航内容$_G['setting'][forumpicstyle] => Array 版块主题封面($_G['setting'][forumpicstyle][thumbwidth] => 主题封面宽度$_G['setting'][forumpicstyle][thumbheight] => 主题封面高度)$_G['setting'][activityfield] => 全局-站点功能-活动主题-发起者必填信息$_G['setting'][activityextnum] => 全局-站点功能-活动主题-扩展资料项数量$_G['setting'][activitypp] => 全局-站点功能-活动主题-用户列表每页显示参与活动的人数$_G['setting'][activitycredit] => 全局-站点功能-活动主题-利用积分$_G['setting'][activitytype] => 全局-站点功能-活动主题-内置类型$_G['setting'][adminemail] => 全局-站点信息-治理员邮箱(3)全局当前登录者信息篇$_G['member'] => Array 当前登录用户个人信息($_G['member'][uid] => UID$_G['member'][email] => 邮箱地址$_G['member'][username] => 用户名$_G['member'][password] => 通过MD5后的密码(别乱输出!!!切记)$_G['member'][status] => 用户是不是已经删除$_G['member'][emailstatus] => 邮箱验证状态0未验证1验证通过$_G['member'][avatarstatus] => 头像上传状态0未上传1已上传$_G['member'][videophotostatus] => 视频认证0未认证1已认证$_G['member'][adminid] => 所在治理组ID$_G['member'][groupid] => 所在用户组ID$_G['member'][groupexpiry] => 所在用户组有效期$_G['member'][extgroupids] => 扩展用户组$_G['member'][regdate] => 注册时刻$_G['member'][credits] => 214 现有总积分$_G['member'][notifysound] => 短消息声音$_G['member'][timeoffset] => 所在时区$_G['member'][newpm] => 新短消息数量$_G['member'][newprompt] => 新提示数量$_G['member'][accessmasks] => 那个貌似访问权限,不确信$_G['member'][allowadmincp] => 是不是拥有治理面板权限0否1是$_G['member'][onlyacceptfriendpm] => 是不是只同意老友短消息0否1是$_G['member'][conisbind] => 是不是绑定QQ 0否1是$_G['member'][lastvisit] => 上次访问时刻);(4)风格变量篇$_G['style'] => Array($_G['style'][styleid] => 当前风格ID$_G['style'][name] => 当前风格名$_G['style'][templateid] => 当前模板体系$_G['style'][tpldir] => 当前模板目录$_G['style'][menuhoverbgcolor] => 导航菜单高亮背景颜色$_G['style'][lightlink] => 浅色链接颜色$_G['style'][floatbgcolor] => 弹出窗口背景属性$_G['style'][dropmenubgcolor] => 下拉菜单背景属性$_G['style'][floatmaskbgcolor] => 弹出窗口边框颜色属性$_G['style'][dropmenuborder] => 下拉菜单边框色$_G['style'][specialbg] => 彩色区域背景色(帖子用户信息栏、需强调的表头等)$_G['style'][specialborder] => 彩色区域边框$_G['style'][commonbg] => 通用显示区域背景颜色$_G['style'][commonborder] => 通用边框颜色$_G['style'][inputbg] => 输入框背景色$_G['style'][inputborderdarkcolor] => 输入框边框深色$_G['style'][headerbgcolor] => 页头背景$_G['style'][headerborder] => 页头分割线高度$_G['style'][sidebgcolor] => 家园侧边背景$_G['style'][msgfontsize] => 帖子内容字号$_G['style'][bgcolor] => 页面背景$_G['style'][noticetext] => 提示信息颜色$_G['style'][highlightlink] => 高亮链接颜色$_G['style'][link] => 链接文字颜色$_G['style'][lighttext] => 浅色文字$_G['style'][midtext] => 中等文本颜色$_G['style'][tabletext] => 一般文本颜色$_G['style'][smfontsize] => 小号字体大小$_G['style'][threadtitlefont] => 主题列表字体$_G['style'][threadtitlefontsize] => 主题列表字体大小$_G['style'][smfont] => 小号字体$_G['style'][titlebgcolor] => 版块列表题目字体颜色$_G['style'][fontsize] => 正常字体大小$_G['style'][font] => 正常字体$_G['style'][styleimgdir] => 扩展图片目录$_G['style'][imgdir] => 界面基础图片目录$_G['style'][boardimg] => logo所在途径$_G['style'][headertext] => 页头文字颜色$_G['style'][footertext] => 页脚文字颜色$_G['style'][menubgcolor] => 导航菜单背景颜色$_G['style'][menutext] => 导航菜单文字颜色$_G['style'][menuhovertext] => 导航菜单高亮文字颜色$_G['style'][wrapbg] => 主体表格背景色$_G['style'][wrapbordercolor] => 主体表格边框色$_G['style'][contentwidth] => 阅读区域宽度$_G['style'][contentseparate] => 帖子距离颜色$_G['style'][inputborder] => 输入框边框浅色$_G['style'][menuhoverbgcode] => 导航菜单高亮背景$_G['style'][floatbgcode] => 弹出窗口背景色$_G['style'][dropmenubgcode] => 下拉菜单背景色$_G['style'][floatmaskbgcode] => 弹出窗口边框颜色$_G['style'][headerbgcode] => 页头背景$_G['style'][sidebgcode] => 家园侧边栏背景属性$_G['style'][bgcode] => 全局背景属性属性$_G['style'][titlebgcode] => 版块列表题目背景$_G['style'][menubgcode] => 导航菜单背景属性$_G['style'][boardlogo] => LOGO img代码。
Discuz文件说明,有助于discuz爱好者,进行自己的开发,在这里提供方便admincp.php——后台系统设置主程序文件,一般只处理菜单的显示的访问权限,不处理管理控制。
ajax.php——论坛模板的ajax 判断及数据返回都在这里进行attachment.php——附件文件,仅仅处理附件下载的功能。
announcement.php——论坛公告的显示,一般很少改config.inc.php——配置论坛数据库、密码等信息,这个大家最熟悉了discuz_version.php——论坛版本信息,用来更新用的,没有官方说明绝对不要修改eccredit.php——论坛商品功能以及信用度查看的处理文件faq.php——论坛自带的帮助favicon.ico——显示在IE 标题栏的的图标forumdisplay.php——很简单,论坛主题列表的显示index.php——控制首页元素显示invite.php——论坛邀请注册程序文件leftmenu.php——首页侧栏文件logging.php——登陆系统,判断用户名、密码。
magic.php——论坛道具程序文件,处理道具购买、赠送等操作medal.php——论坛勋章中心程序文件,处理勋章发送等功能member.php——控制会员列表显示,积分策略等等信息显示memcp.php——会员个人中心显示misc.php——控制评分功能、论坛界面显示功能等等modcp.php——这个是论坛前台的版主操作的迷你后台程序my.php——查看一切和自己在这个论坛的行为,例如“我的帖子”,“用户组权限”等等plugin.php——论坛插件,这个主要控制论坛插件的菜单的显示,一般极少修改pm.php——论坛短信息程序,控制短信息发表与浏览post.php——与viewthread.php 相似,但是更多是管理帖子发表、编辑等等信息,也会有权限的控制提示redirect.php——控制显示论坛的最后发表的主题访问,也控制主题的转向功能register.php——注册文件,同时也会控制注册的信息的合法性relatekw.php——论坛相关标签生成relatethread.php——论坛相关主题robots.txt——设置里面的地址可以阻止搜索机器人访问对应的页面rss.php——RSS 快速订阅,不用多说了吧?search.php——处理论坛搜索功能中的信息筛选seccode.php——论坛注册,生成验证码的程序sitemap.php——论坛SiteMAP 功能程序space.php——个人资料查看的程序stats.php——处理“统计”中的统计信息,也允许查看论坛对应的统计数据----------------------- Page 2-----------------------tag.php——论坛标签整理页task.php——论坛任务程序,任务主程序触发,判断均在此进行topic.php——一般无法直接访问,控制页面显示,显示主题条数topicadmin.php——控制的是管理人员的前台管理操作,如精华、置顶、高亮等等trade.php——处理论坛的交易主题video.php——处理论坛的视频主题,包括显示和调用。
Discuz! 安装插件的方法(以x3版本为例)1、登录至您的论坛后台管理中心,在“应用”菜单下点击选择“获取更多插件”。
2、在搜索框中,输入您需要安装的插件名称,如“用户登录日志”。
3、根据搜索结果,您可以选择进行安装4、打开具体插件,点击右上方“安装插件”,即可自动开始安装。
5、安装完成之后,返回“应用中心”,选择相应插件的“启用”选项,即可正常开启日志功能,在其日志查询中可以查看到所有来访用户的相关信息。
注意:1、在安装之前,请使用管理中心的“文件校验”功能,检查网站程序文件是否完整。
2、检查您的网站程序权限是否正确,如果出现无法写入的情况,您可先增添写入权限,等待插件安装完成之后重新改回即可。
3、上述步骤只是按照通用流程进行描述的,如果本文介绍的安装流程与插件说明书中的描述不符,请以插件提供者的描述为准。
附:使用Discuz插件的风险安装和使用Discuz插件无疑为使用者提供了令人兴奋的扩展特性,但您在动手之前必须要考虑清楚使用插件的风险,依据对风险的评估来决定是否安装Discuz插件,毕竟对于网站论坛来说,运行稳定和访问快速是压倒一切的根本目标。
插件由第三方开发的性质,决定了插件的质量可能参差不齐,可能导致的问题有:1. 由于对系统权限控制的不精通和安全编码经验的不充足导致的论坛安全性下降,严重时插件可能会被作为攻击论坛系统、非法获取管理权限的入口;2. 并不是所有的插件作者和开发团队都深谙高效的编码技术和优化的[[数据结构]]设计,例如一条编写不当的[[SQL]]语句,可能会耗费比整个论坛系统更多的[[服务器]]资源。
因此有些插件可能导致论坛变得不稳定、访问速度变慢、资源消耗提高;3. 由于Discuz! 开发组长期坚持对论坛系统的功能及结构进行改进,以实现更优化的系统效率和更强大的系统功能。
虽然采用插件接口推荐的设计方式,可以尽可能的避免兼容性问题,但由于插件实现方式的多样性,您使用的插件仍然有可能无法兼容于未来的Discuz! 版本。
竭诚为您提供优质文档/双击可除discuz模板使用教程篇一:discuzx3.x模板插件开发制作教程(从入门到精通)一、开发插件所需资料与工具1、discuzx3插件机制插件机制discuz!拥有一套完整的插件机制。
合理使用插件机制,你可以更好的将自己的个性功能需求整合到discuz!产品中的同时,保持代码独立,并且不受后续discuz!产品版本升级的影响。
我们鼓励并推荐,使用插件机制进行个性需求定制和研发。
插件设计的准备工作插件实现流程开始编写社区插件,您应当首先对插件实现的流程有一个大致的了解,以下是我们推荐的插件编写流程:熟练使用discuz!社区系统后,对希望完善或补充的个性化功能进行评估,进而提出插件的功能需求。
对插件做一个概括性的设计,例如:需要使用什么菜单、什么参数,配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。
阅读本文档并在系统设置中实际体验discuz!插件接口所实现的功用,例如:您的插件应当如何设计才能良好的挂接到社区系统中来。
插件接口能够实现哪些功能、不能实现哪些功能,插件为此而需要做的优化、改造和取舍。
编写相应程序代码和模板语句,实现所需的功能并进行代码测试、兼容性测试和代码改进。
如果需要公开您的插件,可以用插件导出的方式,将插件配置信息导出到一个xml文件中,连同相应的程序和模板文件一同打包。
同时,编写一个适合新手的插件的说明书也是必不可少的,其中包括:插件适用的discuz!版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等等。
将插件提供给他人,或自己使用,根据使用者反馈,对插件进行完善。
插件实现流程至此结束。
文件命名规范discuz!按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:可以直接通过浏览器访问的普通程序文件,以.php后缀命名。
被普通程序文件引用的程序文件,以.inc.php后缀命名。
被普通程序文件,或引用程序文件引用的函数库或类库,以.func.php(函数库)或.class.php(类库)后缀命名。
DiscuzX3.2教程插件制作的基本思路是:(初学者适用)1.形成插件思路2.制作插件界面3.构架程序模块4.搭建存储数据5.填充功能语句6.检查应用错误7.完善插件功能前言:为方便互联网数万Discuz!爱好者,更加深入了解Discuz!软件,本人在熟悉Discuz!过程中,顺便将个人经验写给大家。
本贴内容由本人定期更新。
本贴只介绍Discuz!中部分技术点,本贴紧属个人观点,不足之处,请各位多多指教,在下先此谢过!。
“Discuz!”在下文中简称“DZ”。
要弄DZ二次开发,必须至少具备如下技能:1)能够理很好理解MVC构架的原理(虽然DZ不是MVC架构的)2)扎实的PHP基础,熟悉结构化程序,OOP程序的写法及应用3)熟悉MYSQL就用,掌握SQL语言,懂SQL优化者更佳4)熟悉使用Discuz!的各项功能一)Discuz!的文件系统目录注:想搞DZ开发,就得弄懂DZ中每个文件的功能。
a) Admin:后台管理功能模块b) Api:DZ系统与其它系统之间接口程序c) Archiver:DZ中,用以搜索引擎优化的无图版d) Attachments:DZ中,用户上传附件的存放目录e) Customavatars:DZ中,用户自定义头像的目录f) Forumdata:DZ缓存数据的存放目录g) Images:DZ模板中的图片存放目录h) Include:DZ常用函数库,基本功能模块目录i) Ipdata:DZ统计IP来路用的数据j) Plugins:DZ插件信息的存放目录k) Templates:DZ模板文件的存放目录l) Wap:DZ无线,Wap程序处理目录二)必须记熟Discuz!数据库设计的每个表的功能,每个表中每个字段的功能。
关于DZ数据库设计文档,请参阅DZ相关的项目文档(请从本贴附件中下载)三)Discuz!的流程控制a) 后台流程控:DZ后台所有的功能,均需要注册到admincp.php文件,每个功能都至少有一个或一个以上的Action(动作),在admincp.php中,可以定义Action的执行权限,分别为:“admin==1”管理员,或“admin==2 || admin==3”超级版主和版主,每个Action对应一个脚本文件,脚本文件的命名为action.inc.php(*.inc.php),并存放在admin目录下,如执行:admincp.php?action=dodo,相当于执行admin目录下的dodo.inc.php文件b) 前台流程控制:前台的流程控制比较简单:流程是自由的,如:首页:index.php会员注册:register.php;会员登录:logging.php发贴程序:post.php会员信息:member.php论坛内容:forumdisplay.php查看贴子:member.php…大部分功能,此处不一一列出…c) DZ根目下的config.inc.php属于整个DZ系统的配置文件四)Discuz!的数据处理过程a) DZ对mysql的数据库操作处理全部封装在dbstuff(db_mysql.class.php)类中b) 所在的外部数据均通过“daddslashes()”初步过滤,然后再过滤,再根据需要处理五)Discuz!的显示控制(网站多样式风格输出)a) 显示层就是大家通常所看到的网站风格了。
Discuz!X全能版发布接口使用手册安全第一:1,为了程序的安全,请你不要把这个文件告诉他人2,如果你熟悉模块编辑方法,强烈建议你把Locoy.php修改文件名,同时修改发布模块中的Locoy.php路径,包括刷新列表地址和文章发表参数地址使用说明:一,Locoy.php,Locoy.config.php等PHP文件使用二进制上传到你的Discuz!论坛根目录,Locoy.php是程序主文件,可以改名,Locoy.config.php是配置文件,不能改名。
二,Locoy.config.php 是配置文件,所有可以订制参数均可以在这个文件里设置三,Locoy.php 是加密过的文件,请不要尝试修改,且需要保证你的服务器支持PHP5, zend optimizer 3.x,当然现在99%的PHP空间都支持。
如何下载和安装zend optimizer请参看:/?p=1000728四,.CWR文件,是火车采集器器发布模块,请导入你的火车采集器,配置相关Web发布配置就可以了。
五,主题分类参数: typeid=数字ID,这里的ID填写为你的论坛版块中的主题分类的实际ID六,分类信息字段: 根据你的分类模型和相关字段在模块中增加-----------------------------7dlocoyspiderContent-Disposition: form-data; name="fid"[分类ID]-----------------------------7dlocoyspiderContent-Disposition: form-data; name="sortid"4-----------------------------7dlocoyspiderContent-Disposition: form-data; name="selectsortid"4-----------------------------7dlocoyspiderContent-Disposition: form-data; name="subject"[标签:标题]-----------------------------7dlocoyspiderContent-Disposition: form-data; name="typeoption[soft_size]"软件大小-----------------------------7dlocoyspiderContent-Disposition: form-data; name="typeoption[soft_type]"软件类别-----------------------------7dlocoyspiderContent-Disposition: form-data; name="typeoption[soft_lang]"软件语言-----------------------------7dlocoyspiderContent-Disposition: form-data; name="typeoption[soft_os]"应用平台-----------------------------7dlocoyspiderContent-Disposition: form-data; name="typeoption[soft_into]"软件介绍-----------------------------7dlocoyspiderContent-Disposition: form-data; name="typeoption[soft_url]"[标签:缩略图]-----------------------------7dlocoyspiderContent-Disposition: form-data; name="checkbox"-----------------------------7dlocoyspiderContent-Disposition: form-data; name="message"[标签:内容]-----------------------------7dlocoyspiderContent-Disposition: form-data; name="tags"[标签:标签]其中,typeoption[soft_url]为分类信息字段,soft_url为添加的字段名称附件下载及提取设置:所有的附件均按此设置操作,附件下载以后,请先将附件上传到论坛的附件目录,再发布内容。
竭诚为您提供优质文档/双击可除discuz模板开发教程篇一:discuzx3.x模板插件开发制作教程(从入门到精通)一、开发插件所需资料与工具1、discuzx3插件机制插件机制discuz!拥有一套完整的插件机制。
合理使用插件机制,你可以更好的将自己的个性功能需求整合到discuz!产品中的同时,保持代码独立,并且不受后续discuz!产品版本升级的影响。
我们鼓励并推荐,使用插件机制进行个性需求定制和研发。
插件设计的准备工作插件实现流程开始编写社区插件,您应当首先对插件实现的流程有一个大致的了解,以下是我们推荐的插件编写流程:熟练使用discuz!社区系统后,对希望完善或补充的个性化功能进行评估,进而提出插件的功能需求。
对插件做一个概括性的设计,例如:需要使用什么菜单、什么参数,配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。
阅读本文档并在系统设置中实际体验discuz!插件接口所实现的功用,例如:您的插件应当如何设计才能良好的挂接到社区系统中来。
插件接口能够实现哪些功能、不能实现哪些功能,插件为此而需要做的优化、改造和取舍。
编写相应程序代码和模板语句,实现所需的功能并进行代码测试、兼容性测试和代码改进。
如果需要公开您的插件,可以用插件导出的方式,将插件配置信息导出到一个xml文件中,连同相应的程序和模板文件一同打包。
同时,编写一个适合新手的插件的说明书也是必不可少的,其中包括:插件适用的discuz!版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等等。
将插件提供给他人,或自己使用,根据使用者反馈,对插件进行完善。
插件实现流程至此结束。
文件命名规范discuz!按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:可以直接通过浏览器访问的普通程序文件,以.php后缀命名。
被普通程序文件引用的程序文件,以.inc.php后缀命名。
被普通程序文件,或引用程序文件引用的函数库或类库,以.func.php(函数库)或.class.php(类库)后缀命名。
DISCUZ插件开发新手入门作者:联想锋行QQ445663314前言:本文所谓插件开发是指按照DISCUZ官方用户手册所说明的插件开发流程所进行的开发。
在阅读本文之前,假设读者是已经了解DISCUZ程序中的include/common.inc.php这个公共处理程序。
如果您不了解此程序功能,请阅读手用户册中的插件开发说明,并阅读程序。
本文基于DISCUZ 6.1.0 GBK版。
水平有限,仅供新手参考。
如有错误,请指正。
第一步:后台增加插件1,添加新插件(点击添加新插件)2,编辑插件信息(点击详情)设置插件信息注意插件目录是相对于./plugins/的,因为插件文件是要放在./plugins/这个文件夹下的。
为了方便和统一管理,一般都是按照自己的插件项目命名一个文件夹,然后此插件的程序放在此目录下。
一般此目录名与您的唯一标识符是相同的,以便于识别。
当然,不是必需,但是,为了良好习惯和标准,最好还是同名。
一般会在前面加plugins_以区分这是插件数据表。
另外注意数据库表不要有前缀。
当然,写在那里只是备份数据的时候要用到。
如果你觉得你的数据表不用备份到里,也可以不必填写。
当然,大部分时候还是推荐您填写。
3,增加模块程序模块名填写英语,名称填写中文的链接显示名称。
模块类型选择“前台调用(前台下拉菜单)”,此时直接URL可以不填写。
如果此模块是给会员用的,使用等级设为普通用户。
4,把插件设为可用回到论坛插件管理,把刚才新增的插件设为可用。
如下图:把前面的勾打上。
OK,现在论坛首页去看看,测试一下插件有没有显示出来。
OK,出来了。
成功一半了。
点击插件的链接,会出现以下提示:这是正常的,因为我们还没有正式开始写程序嘛!第二步:编写程序和模板1,在plugins目录下增加插件目录,此目录名example 要与插件设置的“插件目录”里的一致!2,在plugins目录下增加模块程序注意,文件名要按“模块名.inc.php”来,如本文中的kaifa.inc.php。
Discuz!X2.5 插件开发实例教程欢迎您浏览本网页,为满足站长在遇到插件的问题以及在一些插件的需求上,这个系列的插件制作教程就是特别为您准备的。
本人做了一段时间的插件,希望我写的内容对你有用~当然,我不是DX的研发人员,我只是DX的爱好者。
相信对DX的安装和使用大家都已经有了初步的了解,本内容假定您已经具备如下技能:1. 您的网站或者测试站点可以正常使用2. 您对PHP有基本的了解3. 您对数据库有着基本的了解一旦您满足了上面的要求,那么您可以来了解DX的插件制作了。
网站的基本数据在DX的这个框架中,我们会经常用到一些使用的数据,这些数据包括:系统常量、全局变量、系统调用,首先我们从系统常量说起系统常量DX里面对一些常量做了自己的定义,接下来的表格列举了,更多的变量可以使用附录里的代码获得。
全局变量DX的全局变量事实上全部压缩到了一个变量:$_G里面,接下来的表格列举了常用的$_G 数据内部的变量,更多的变量可以使用附录里的代码获得。
变量名说明uid用户UIDusername用户名groupid用户组IDclientip用户IP地址charset语言编码siteurl网站地址config网站基本配置,这是一个数组setting网站基本设置,这是一个数组系统调用系统调用里面,恐怕最重要的调用要数DB这个静态对象了。
这是一个数据库的静态对象,对其的使用也是经常用到的,其方法包括:变量名说明DB::table()增加了pre的数据库表名DB::delete()删除表中数据DB::insert()向表中插入数据DB::update()更新表中数据DB::fetch()配合DB::query来实现数据资源数据的获取DB::query()执行一条数据库语句DB::fetch_first()获取结果集的第一条记录另外,系统的一些其它的系统调用,包括:获取用户信息、插入帖子等内容,都可以在:souce/function/ 文件夹下找到对应的文件来查看。
Discuz! X 插件开发手册.txt用快乐去奔跑,用心去倾听,用思维去发展,用努力去奋斗,用目标去衡量,用爱去生活。
钱多钱少,常有就好!人老人少,健康就好!家贫家富,和睦就好。
Discuz! X 插件开发手册文件命名规范Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名。
被普通程序文件引用的程序文件,以 .inc.php 后缀命名。
被普通程序文件,或引用程序文件引用的函数库或类库,以 .func.php(函数库) 或 .class.php(类库) 后缀命名。
模板文件,以 .htm 后缀命名,插件模板文件存在于 source/plugin/identifier/template/ 目录中。
模板语言包文件,以 .lang.php 后缀命名,插件语言包文件开发时存放于 data/plugindata/ 目录中,文件名为 ng.php。
动态缓存文件,存放于 ./data/cache 目录中,依据不同的功用进行独立的命名。
使用后台数据备份功能生成的备份文件,通常以 .sql 为后缀,存放于 data/ 目录中。
有些目录中存在内容为空白的 index.htm 文件,此类文件是为了避免 Web 服务器打开Directory Index 时可能产生的安全问题。
class_core.php 模块功能白皮书source/class/class_core.php 是 Discuz! 的通用初始化模块程序,其几乎被所有的外部代码所引用,在您开始插件设计之前,可以先对该模块的大致功能做一定的了解。
class_core.php 主要完成了以下任务:对不同 PHP 及操作系统环境做了判断和兼容性处理,使得 Discuz! 可以运行于各种不同配置的服务器环境下。
初始化常量 IN_DISCUZ 为 TRUE,用于 include 或 require 后续程序的判断,避免其他程序被非法引用。
读取社区程序所在绝对路径,存放于常量 DISCUZ_ROOT 中。
加载所需的基本函数库 source/function/function_core.php。
通过 config/config_global.php 中提供的数据库账号信息,建立数据库连接。
Discuz! 支持数据表的前缀,如需获得表的全名,可使用“DB::table('tablename')”方式。
判断用户是否登录,如登录标记 $_G['uid'] 为非 0,同时将 $_G['user'](加了addslashes 的用户名,可用于不加修改的插入数据库)、 $_G['member']['username'](原始的用户名,可用于页面显示)、$_G['member']['password'](用户密码的MD5串)等相应用户信息赋值,其他用户信息存放于 $_G['member'],更多信息可通过“getuserprofile()”获取。
判断用户管理权限,将管理权限标记 $_G['adminid'] 为 1~3 中间的值。
0 代表普通用户;1 代表论坛管理员;2 代表超级版主;3 代表论坛版主。
将用户权限按照其所在的主用户组 ID 标记为 $_G['groupid'],相关权限从该 $_G['groupid'] 所对应的系统缓存中读出,存放于$_G['group']。
预置读入了每个模块的各种设置变量。
插件接口概述使用管理员账号登录 Discuz! 管理中心,在顶部菜单将可以看到“插件”菜单。
“插件列表”列出了所有已安装的插件,是控制插件打开与否、设计插件模块、菜单、参数和使用权限的地方,插件开发者可以依照设计意图,在此进行插件的初步设置,这里同时也提供插件导入和插件开关的功能,用于导入他人设计的插件和对插件的可用状态进行变更。
开始编写一个新插件,请首先在插件管理中选择“设计新插件”,填写插件名称,名称用于表明此插件的用途,例如设置为“虚拟银行插件”。
惟一标识符用于在后续的插件模块中调用本插件,不可与现有插件重复,命名规则限制与 PHP 变量命名相同,虽然初次设置后仍可改动,但强烈建议一次性将此配置设置好,否则可能涉及到很多代码方面的变更,增加编码的麻烦。
请注意:惟一标识符请不要设置的过短,或使用有可能与其他插件重复的命名,例如制作此插件的公司叫做 Comsenz Inc.,插件名称是“虚拟银行插件”,惟一标识符可设置为“comsenz_virtual_bank”,后面将以“虚拟银行插件”和“comsenz_virtual_bank”为例进行说明。
在source/plugin/ 目录中创建与唯一标识符同名的目录名,如source/plugin/comsenz_virtual_bank/。
在插件管理中添加插件后,仅仅是增加了一条插件记录,后面还需要很多相关的设计和设置。
在列表中选择插件的“详情”进入插件的详细设置。
插件设置分为三个部分:插件基本设置:设置插件的基本参数,配置项目右边括号中的内容,为此设置对应的参数名称,调用方法将在后面的《参数读取与缓存控制》中详细说明。
插件模块:插件模块分为程序链接、扩展项目和程序脚本 3 类:程序链接导航栏项目:可在前台导航栏增加一个菜单项,可自主指派菜单链接的 URL,也可以调用插件的一个模块,模块文件名指派为source/plugin/插件目录/插件模块名.inc.php”。
注意:由于引用外部程序,因此即便设置了模块的使用等级,您的程序仍需进行判断使用等级是否合法。
程序链接导航栏 - 插件菜单项目:可在前台导航栏的插件子菜单中增加一个菜单项。
扩展项目个人面板:可在个人面板上部增加一个菜单项。
扩展项目个人面板 - 个人资料:可在个人面板的个人资料页上部增加一个菜单项。
扩展项目个人面板 - 积分和用户组:可在个人面板的积分和用户组页上部增加一个菜单项。
扩展项目站点帮助:可在站点帮助增加一个菜单项。
扩展项目管理面板 - 基本:可在前台论坛管理面板侧边上部增加一个菜单项。
扩展项目管理面板 - 工具:可在前台论坛管理面板侧边下部增加一个菜单项。
扩展项目管理中心:可在后台插件栏目中为此插件增添一个管理模块。
程序脚本页面嵌入:设置一个包含页面嵌入脚本的模块,模块文件名指派为 source/plugin/插件目录/插件模块名.class.php”。
(页面嵌入将在后面的《页面嵌入模块开发》中详细说明)程序脚本特殊主题:设置一个特殊主题脚本的模块,模块文件名指派为 source/plugin/插件目录/插件模块名.class.php”。
(特殊主题将在后面的《特殊主题模块开发》中详细说明)您可以为每个模块设置不同的使用等级,例如设置为“超级版主”,则超级版主及更高的管理者可以使用此模块。
插件变量配置:插件接口中提供了一个通用的插件配置管理程序,在大多数情况下可实现插件的参数配置,省却了插件开发者自行编写后台管理模块(即上面提到的“扩展项目管理中心”模块)的麻烦。
通常情况下,应优先使用通用插件配置管理程序来实现插件的参数配置,只有在通用程序确实无法实现时,才自行编写后台管理模块。
输入配置名称和配置变量名、选择合适的配置类型后,即可为此插件增加一个配置变量,点“详情”可以编辑此配置变量的更多信息。
为了方便插件程序调用使用者配置好的参数,配置变量同样被存放在了缓存文件中,读取方法将在后面的《参数读取与缓存控制》中详细说明。
注意:您只有在插件管理中将插件设置为“可用”,以上设置才能生效。
参数读取与缓存控制编写插件程序时,可能需要读取一些插件的信息,如果插件需要使用者进行配置,还需要读取使用者设置的参数值。
Discuz! 允许插件程序使用数据库读取和缓存读取这两种方法获取插件信息和参数。
Discuz! 的插件接口已经对插件信息进行了合理的缓存,使用缓存读取的方式,将比数据库读取速度更快,消耗的资源更是几乎可以忽略不计。
缓存读取唯一的局限是需要插件使用插件接口提供的通用后台管理程序。
如果使用自定义后台模块的方式,需要后台模块将参数存放到 pluginvars 数据表中,才能被系统正常缓存。
我们强烈推荐您通过缓存读取插件信息和配置数据。
插件参数读取由于调用系统缓存统一通过“loadcache()”函数调用,并存放于 $_G['cache'] 中,因此“loadcache('plugin')”后可加载插件的缓存并存放于 $_G['cache']['plugin'] 中。
嵌入点插件和以 plugin.php 为主脚本调用的插件无需加载此缓存,系统已自动加载了缓存。
页面嵌入模块开发页面嵌入类型脚本格式<?php //全局嵌入点类(必须存在) class plugin_identifier { function HookId_1() { ...... return ...; } function HookId_2() { ...... return ...; } ...... } //全局脚本嵌入点类class plugin_identifier_CURSCRIPT extends plugin_identifier { function HookId_1() { ...... return ...; } function HookId_2() { ...... return ...; } ...... } ?>identifier插件的唯一标识符,在插件设置中设置。
CURSCRIPT嵌入点位于的脚本名,如 forum.php 为 forum。
HookId可用函数名以及被调用的脚本请看下面的介绍。
这些函数将在 Discuz! 所有模块执行前调用。
如果要在模板输出前调用,需在函数名结尾加上“_output”。
全局调用的函数(“global_”开头的)在模板输出前调用。
如:viewthread_imicons() 在模块执行前调用,viewthread_imicons_output() 在模板输出前调用。
要查看所有的预定义嵌入点可通过查找 source/class/class_template.php 中找到以下代码,去除 //for Developer 注释后,更新缓存即可查到。
$dev = '';//for Developer $dev = "echo '[$hookid]';";预定义的嵌入点会在页面预置好的位置输出函数返回的内容。