




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Discuz!X2.5 插件制作教程欢迎您浏览本网页,为满足站长在遇到插件的问题以及在一些插件的需求上,这个系列的插件制作教程就是特别为您准备的。本人做了一段时间的插件,希望我写的内容对你有用当然,我不是DX的研发人员,我只是DX的爱好者。 相信对DX的安装和使用大家都已经有了初步的了解,本内容假定您已经具备如下技能:1. 您的网站或者测试站点可以正常使用2. 您对PHP有基本的了解3. 您对数据库有着基本的了解一旦您满足了上面的要求,那么您可以来了解DX的插件制作了。网站的基本数据在DX的这个框架中,我们会经常用到一些使用的数据,这些数据包括:系统常量、全局变量、系统调用 ,首先我们从系统常量说起系统常量DX里面对一些常量做了自己的定义,接下来的表格列举了,更多的变量可以使用附录里的代码获得。常量名说明DISCUZ_ROOT网站的根目录TIMESTAMP程序执行的时间戳CHARSET程序的语言编码类型IS_ROBOT是否是机器访问FORMHASHHASH值全局变量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/ 文件夹下找到对应的文件来查看。 好了,经常用到的数据内容就在上面的列表里面了,附录提供了一些查看全部内容的代码!下一篇将会介绍如何编写 管理中心 插件!附录: 1. 查看全部常量:1. indentinit();/indentindentprint_r(get_defined_constants();/indentindent?/indent2. 查看$_G变量中内容1. indentinit();/indentindentprint_r($_G);/indentindent?/indent这次我们要来制作一个简单的插件来学习如何 新建插件、建立管理中心 。 开始新建 进入管理中心-插件-插件-设计新插件 如图: 按照要求填写 填写好之后,就可以来添加管理中心的设置文件了,这里要注意:你的标识符一旦确定就不能修改!并且,你所写的程序文件都应该放在:source/plugin/标识符/ 这个文件夹下面,例如我们要设置下图的程序,文件:admincp.inc.php应该放在该目录下即可。 点击 提交 之后,返回插件列表,开启我们新建的插件,虽然我们还没有编写admincp.inc.php这个文件,但是因为我们要测试我们编写的内容,我们需要开启此插件才能检验该插件是否可用。 之后,你就会在左边的导航栏里看到 刚才填写的插件名称了,如图: 点击之后发现这个文件不存在 现在我们就可以编写这个文件了,使用你常用的编辑器新建文件:source/plugin/标识符/admincp.inc.php,然后在里面写上如下代码:1. indent/indent该代码如下图显示:这下子,我们就做好了一个简单的可以显示的管理中心的插件了,然后我们可以在此插件的基础上来添加自己的内容了,发挥你的想象力吧现在我遇到一个问题:我想更改自己网站的页面内容,比如我希望能在不使用二次开发更改系统模板的情况下来更改部分布局和内容,我应该怎么做? 似乎现在的DX很强大,但是这样的功能它支持么?很高兴地告诉你:你完全可以做到!你甚至可以通过自己的内容来对页面的任意一部分内容进行更改,这就是DX插件最最强大的地方,当然前提是你需要去了解它。 现在我们来实现一个内容,我们以我自己的一个插件:帖子导读的显示部分为例。 首先,我们需要了解DX的一个概念:嵌入点。 在每个标准的DX页面都有一些DX已经设定好的嵌入点,要查看这些嵌入点,我们需要对系统的代码进行一些修改,方法如下:查找 source/class/class_template.php 中找到以下代码,去除 /for Developer 注释后,更新缓存即可查到。$dev = ;/for Developer $dev = echo $hookid; 更新一下缓存,然后你就会看到如下图的内容: 帖子导读需要我们在每个页面都进行调用,我们需要编写一个调用类: 同样,我们需要在我们的插件目录下来编写这个插件了,在这里,我们以我们最常见的方式来写一段JS代码:HELLO,WORLD!?phpif(!defined(IN_DISCUZ) exit(Access Denied);class plugin_mtestfunction global_footer()return alert(Hello,world!); ;? 保存这个文件为:source/plugin/mtest/m.class.php 假定mtest是你的标识符,然后更新缓存,再点击你的广场页面试试,看看有什么奇迹发生。 可以随意地输出您想要的JS代码,这也就是意味着,即使在一些没有嵌入点的地方,您也可以同输出的JS代码来改变您想作出的改变,当然,嵌入点能做的远远不止如此,那得看您能想到多少了。 现在,您基本上已经可以做常用的插件了。不过,如果您需要一个导航栏怎么办?天啊!我需要一个类似于每日签到 这样的一个签到页面,我应该怎么来做呢? 不用着急,接下来我们就来实验一个导航栏,然后进去之后输出一个hello,world的代码。 首先,我们需要在设计模块里面增加一个导航栏 有了它,我们就可以写:mtest.inc.php这个文件了,不过我们似乎还需要一点点模板的支持,那么我们在这个文件夹下,新建一个文件夹:template,然后在它的下面新建一个文件:mtest.htm,内容如下:template common/headerHELLO,WORLD!template common/footer 在mtest.inc.php这个文件里,我们写入: 然后,更新一下缓存,然后刷新一下站点首页,看看有什么效果?hello,world!导航栏最后的现实 怎么样,是不是很棒?你可以浏览我的以下插件来学习如何使用插件: 1. 每日签到/thread-1703440-1-1.html 2. 帖子导读/thread-1799341-1-1.html我终于写出了自己的一个伟大的插件,我希望别人也能使用这个插件!我想发布这个插件,我该如何做呢? 面对问题 然而我们刚刚写完了一个插件,但是我们所要面临的问题才刚刚开始,我们需要考虑的内容很多,这些内容包括: 1. 我使用的语言编码方式是UTF8,我希望那些使用GBK的站长也能使用我的插件 2. 我可能会使用到数据库来建立我需要使用的表,我该如何建立 3. 我怎么描述出我的使用条例或者安装条例 4. 我怎么为我的插件进行插件描述 5. 我的插件发布在哪里,是否需要收费 天啊,我头都大了!我根本没有想过这个问题!如此多的问题迎面而来,我该如何解决?嘿嘿,这个时候就是体现我自己价值的时刻了,我们来慢慢的讲解吧! 语言编码 要解决语言编码的问题比较的麻烦,首先我们要确保我们所有程序里面没有出现中文字符,其次我们需要新建一个文件:data/plugindata/mtest.lang.php这个文件,写入内容为:1. 启用,4. );5. $templatelangmtest = array(6. );7. ?然后,在你自己的程序使用前,使用:1. $mlang=$scriptlangmtest;来调用一下,这样,$mlang这个数组里存放的就是你要使用的内容了。 接下来,我们要做不同的对应的语言编码的xml文件了。 我相信你一定看到导出这个按钮了,然后就是一个XML文件,把它存放到你的插件目录下面,如果您不愿意做多语言编码的插件,那么就可以直接打包插件目录为rar格式,您的插件已经完成。这里,我们还有GBK的站长需要,因此我们需要进行转码。首先我们对我们的这个:discuz_plugin_mtest.xml文件进行改名,改名为:discuz_plugin_mtest_SC_UTF8.xml ,这里:SC表示简体中文 UTF8表示UTF8编码方式,然后使用编码转换工具,经这个XML文件转码后,重命名为对应的名字,放在这个目录下即可。编码转换工具我推荐 ConvertZ 这个工具,可以在网上搜索一下。至此,我们的转换工作就做完了! 使用数据库 我需要使用数据库,我的插件需要新建一个数据表怎么办? 还记得我们刚才导出的那个XML文件么?我们需要修改这个XML文件的内容来实现我们的操作了。我们需要在1. 中加上如下代码:1. indent/indentindent/indent上述代码
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农发行兰州市城关区2025秋招结构化面试15问及话术
- 农发行黑河市逊克县2025秋招结构化面试经典题及参考答案
- 国家能源佳木斯市富锦市2025秋招笔试言语理解与表达题专练及答案
- 国家能源合肥市肥西县2025秋招笔试题库含答案
- 广安华蓥中储粮2025秋招笔试性格测评题专练及答案
- 国家能源吉林市舒兰市2025秋招笔试题库含答案
- 国家能源蚌埠市固镇县2025秋招笔试言语理解与表达题专练及答案
- 关于战略合作协议书集锦15篇
- 2025年潍坊市技师学院公开招聘控制总量工作人员(39人)模拟试卷及一套答案详解
- 2025年铜川市为县以下医疗卫生机构定向招聘笔试模拟试卷及答案详解(典优)
- 秩序员休假管理制度
- 2025至2030中国惯性导航行业投资现状与前景预测分析报告
- 轻型卒中临床诊疗中国专家共识(2024版)解读
- 非ST段抬高型急性冠脉综合征诊断和治疗指南(2024)解读
- 2025年中国张裕产区葡萄酒特色与品牌国际化发展报告
- 耳机品质协议书范本
- 2025版VI设计合同范本
- 人美版五年级上册5.绘画中的透视现象一等奖教案设计
- 从法律出发理解与应用新清单标准
- 2024-2025学年下学期高一英语人教版同步经典题精练之语法填空
- 公司销售人员激励方案
评论
0/150
提交评论