版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、discuz!论坛程序模板开发技术篇一:DiscuzX3.x模板插件开发制作教程(从入门到精通) 一、开发插件所需资料与工具 1、DiscuzX3 插件机制 插件机制Discuz! 拥有一套完整的插件机制。 合理使用插件机制,你可以更好的将自己的个性功能需求整合到Discuz!产品中的同时,保持代码独立,并且不受后续Discuz!产品版本升级的影响。 我们鼓励并推荐,使用插件机制进行个性需求定制和研发。 插件设计的准备工作 插件实现流程 开始编写社区插件,您应当首先对插件实现的流程有一个大致的了解,以下是我们推荐的插件编写流程: ? 熟练使用 Discuz! 社区系统后,对希望完善或补充的个性
2、化功能进行评估,进而提出插件的功能需求。 ?对插件做一个概括性的设计,例如:需要使用什么菜单、什么参数,配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。 ?阅读本文档并在系统设置中实际体验 Discuz! 插件接口所实现的功用,例如:您的插件应当如何设计才能良好的挂接到社区系统中来。插件接口 能够实现哪些功能、不能实现哪些功能,插件为此而需要做的优化、改造和取舍。 ?编写相应程序代码和模板语句,实现所需的功能并进行代码测试、兼容性测试和代码改进。 ?如果需要公开您的插件,可以用插件导出的方式,将插件配置信息导出到一个 XML 文件中,连同相应的程序和模板文件一同打包。同时,编写 一个适
3、合新手的插件的说明书也是必不可少的,其中包括:插件适用的 Discuz! 版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等 等。 ?将插件提供给他人,或自己使用,根据使用者反馈,对插件进行完善。插件实现流程至此结束。 ? 文件命名规范 Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范: ?可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名。 ?被普通程序文件引用的程序文件,以 .inc.php 后缀命名。 ?被普通程序文件,或引用程序文件引用的函数库或类库,以 .func.php(函数库) 或 .class.php(类库) 后缀命名。 ?
4、模板文件,以 .htm 后缀命名,插件模板文件存在于 source/plugin/identifier/template/ 目录中,手机版插件模板存在于 source/plugin/identifier/template/mobile/目录中 ?模板语言包文件,以 .lang.php 后缀命名,插件语言包文件开发时存放于 data/plugindata/ 目录中,文件名为identifier.lang.php。 ?动态缓存文件,存放于 ./data/cache 目录中,依据不同的功用进行独立的命名。 ?使用后台数据备份功能生成的备份文件,通常以 .sql 为后缀,存放于 data/ 目录中。
5、?有些目录中存在内容为空白的 index.htm 文件,此类文件是为了避免 Web 服务器打开 Directory Index 时可能产生的安全问题。 ?X2.5新增内容 从 Discuz! X2.5 开始,产品对数据表进行了封装,封装后的文件统一命名为 Table 类,通过“C:t(Table类文件名)”方式调用。插件如需封装自己的数据表,可将 Table 类文件存放于 source/plugin/identifier/table/ 目录下,并以 table_表名.php 格式命名,详见X2.5的新 程序架构。 ? class_core.php 模块功能白皮书 source/class/cl
6、ass_core.php 是 Discuz! 的通用初始化模块程序,其几乎被所有的外部代码所引用,在您开始插件设计之前,可以先对该模块的大致功能做一定的了解。class_core.php 主要完成了以下任务: ?对不同 PHP 及操作系统环境做了判断和兼容性处理,使得 Discuz! 可以运行于各种不同配置的服务器环境下。 ?初始化常量 IN_DISCUZ 为 TRUE,用于 include 或 require 后续程序的判断,避免其他程序被非法引用。 ?读取社区程序所在绝对路径,存放于常量 DISCUZ_ROOT 中。 ?加载所需的基本函数库 source/function/function
7、_core.php。 ?通过 config/config_global.php 中提供的数据库账号信息,建立数据库连接。Discuz! 支持数据表的前缀,如需获得表的全名,可使用 “DB:table(tablename)”方式。 ?判断用户是否登录,如登录标记 $_Guid 为非 0,同时将 $_Gusername(加了 addslashes 的用户名,可用于不加修改的插入数据库)、 $_Gmemberusername(原始的用户名,可用于页面显示)、$_Gmemberpassword(用户密码的MD5串)等相应用户信息赋值,其他 用户信息存放于 $_Gmember,更多信息可通过“getus
8、erprofile()”获取。 ?判断用户管理权限,将管理权限标记 $_Gadminid 为 13 中间的值。0 代表普通用户;1 代表论坛管理员;2 代表超级版主;3 代表论坛版 主。 将用户权限按照其所在的主用户组 ID 标记为 $_Ggroupid,相关权限从该 $_Ggroupid 所对应的系统缓存中读出,存放于 $_Ggroup。 ?预置读入了每个模块的各种设置变量。 ?X2.5变更内容 $_Gusername 将不进行 addslashes 处理。 插件接口概述 使用管理员账号登录 Discuz! 管理中心,在顶部菜单将可以看到“插件”菜单。“插件列表”列出了所有已安装的插件,是控
9、制插件打开与否、设计插件模块、菜单、参数和使用权限的地方,插件开发者可以依照设计意图,在此进行插件的初步设置,这里同时也提供插件导入和插件开关的功能,用于导入他人设计的插件和对插件的可用状态进行变更。 开始编写一个新插件,请首先打开 config/config_global.php 文件,在文件结尾添加以下代码开启插件设计者模式。 ?$_configplugindeveloper = 1; 在插件管理中选择“设计新插件”,填写插件名称,名称用于表明此插件的用途,例如设置为“虚拟银行插件”。惟一标识符用于在后续的插件模块中调用本插件,不可与现有插件重复,命名规则限制与 PHP 变量命名相同,虽然
10、初次设置后仍可改动,但强烈建议一次性将此配置设置好,否则可能涉及到很多代码方面的变更,增加编码的麻烦。请注意:惟一标识符请不要设置的过短,或使用有可能与其他插件重复的命名,例如制作此插件的公司叫做 Comsenz Inc.,插件名称是“虚拟银行插件”,惟一标识符可设置为“comsenz_virtual_bank”。最后在 source/plugin/ 目录中创建与唯一标识符同名的目录名,如 source/plugin/comsenz_virtual_bank/。 在插件管理中添加插件后,仅仅是增加了一条插件记录,后面还需要很多相关的设计和设置。在列表中选择插件的“详情”进入插件的详细设置。插件
11、设置分为三个部分: ? 插件模块 插件模块分为程序链接、扩展项目和程序脚本 3 类: 程序链接 主导航项目:可在主导航栏增加一个菜单项,可自主指派菜单链接的 URL,也可以调用插件的一个模块,模块文件名指派为 source/plugin/插件目录/插件模块名.inc.php”。注意:由于引用外部程序,因此即便设置了模块的使用等级,您的程序仍需进行判断使用等 级是否合法。 ?程序链接 主导航项目 - 插件菜单:可在主导航栏的插件子菜单中增加一个菜单项。 ?程序链接 顶部导航项目、底部导航项目、快捷导航项目、家园导航项目:可在各个导航中增加一个菜单项。 ?扩展项目 个人设置:可在个人设置中增加一个
12、菜单项。 ?扩展项目 个人设置 - 个人资料:可在个人设置的个人资料页上部增加一个菜单项。 ?扩展项目 个人设置 - 积分:可在个人设置的积分页上部增加一个菜单项。 ?扩展项目 站点帮助:可在站点帮助中增加一个菜单项。 ?扩展项目 我的帖子:可在我的帖子中增加一个菜单项。 ?扩展项目 门户管理:可在门户管理面板上部增加一个菜单项。 ?扩展项目 论坛管理 - 基本:可在前台论坛管理面板侧边上部增加一个菜单项。 ?扩展项目 论坛管理 - 工具:可在前台论坛管理面板侧边下部增加一个菜单项。 ?扩展项目 管理中心:可在后台插件栏目中为此插件增添一个管理模块。 ?程序脚本 页面嵌入 - 普通版:设置一个
13、包含页面嵌入脚本的模块,该模块用于在普通电脑访问的页面显示。模块文件名指派为 source/plugin/插件目录/插件模块名.class.php”。(页面嵌入将在后面的中详细说明) ?程序脚本 页面嵌入 - 手机版:设置一个包含页面嵌入脚本的模块,该模块用于在手机访问的页面显示。 ?程序脚本 特殊主题:设置一个特殊主题脚本的模块,模块文件名指派为 source/plugin/插件目录/插件模块名.class.php”。(特殊主题将 在后面的特殊主题模块开发中详细说明) ? 您可以为每个模块设置不同的使用等级,例如设置为“超级版主”,则超级版主及更高的管理者可以使用此模块。 扩展项目模块可以在
14、社区的特定位置扩展出新的功能,通常用于扩展新的设置项目。项目的脚本文件以 .inc.php 结尾(如 test.inc.php),模版为固定文件名,位于插件目录的 template/ 子目录中,文件名与脚本名同名(如 test.htm),扩展名为 .htm。添加相应的扩展项目模块时,需注明程序模块、菜单名称。例如我们添加个人面板项目,程序模块为 test,菜单名称是“测试”,当插件启用后,个人面板即家园的设置中会出现“测试”拓展项目。 在新插件内核中,通过 plugin.php 方式访问的插件可直接通过 plugin.php?id=xxx:yyy 方式调用而无需再在后台定义为普通脚本模块,只要
15、 source/plugin/xxx/yyy.inc.php 文件存在即可。如果 xxx 和 yyy 同名,可直接通过 plugin.php?id=xxx 方式访问。插件变量配置 插件接口中提供了一个通用的插件配置管理程序,在大多数情况下可实现插件的参数配置,省却了插件开发者自行编写后台管理模块(即上面提到的“扩展项目 管理中心”模块)的麻烦。通常情况下,应优先使用通用插件配置管理程序来实现插件的参数配置,只有在通用程序确实无法实现时,才自行编写后台管理模块。输入配置名称和配置变量名、选择合适的配置类型后,即可为此插件增加一个配置变量,点“详情”可以编辑此配置变量的更多信息。为了方便插件程序调
16、用使用者配置好的参数,配置变量同样被存放在了缓存文件中,读取方法将在后面的插件的参数读取与缓存控制中详细说明。 注意:您只有在插件管理中将插件设置为“可用”,以上设置才能生效。 插件的参数读取与缓存控制 ?编写插件程序时,可能需要读取一些插件的信息,如果插件需要使用者进行配置,还需要读取使用者设置的参数值。Discuz! 允许插件程序使用数 据库读取和缓存读取这两种方法获取插件信息和参数。Discuz! 的插件接口已经对插件信息进行了合理的缓存,使用缓存读取的方式,将比数据库 读取速度更快,消耗的资源更是几乎可以忽略不计。缓存读取唯一的局限是需要插件使用插件接口提供的通用后台管理程序。如果使用
17、自定义后台 模块的方式,需要后台模块将参数存放到 pluginvars 数据表中,才能被系统正常缓存。我们强烈推荐您通过缓存读取插件信息和配置数据。 ? 由于调用系统缓存统一通过“loadcache()”函数调用,并存放于 $_Gcache 中,因此“loadcache(plugin)”后插件的变量缓会存放于 $_Gcacheplugin 中。嵌入点插件和以 plugin.php 为主脚本调用的插件无需加载此缓存,系统已自动加载了缓存。变量配置类型为“版块/*” 的变量会保存在 $_Gcacheforumsfidplugin 中。变量配置类型为“用户组/*”的变量会保存在 $_Gcacheus
18、ergroup_groupidplugin 和 $_Ggroupplugin 中。 页面嵌入模块开发 页面嵌入类型脚本格式<?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 .
19、; .? ?plugin_ ?普通版脚本中的类名以 plugin_ 开头。手机版脚本中的类名以 mobileplugin_ 开头。 ?identifier ?插件的唯一标识符,在插件设置中设置。 ?CURSCRIPT ?嵌入点位于的脚本名,如 forum.php 为 forum。 ?HookId 函数名 调用位置 所有模块执行前被调用 声明位置 参数含义 HookId() 脚本嵌入点类 $value: array(template = 当前要输出的模版,message = showmessage 的信息内容,values = showmessage 的信息脚本嵌入点类 变量, ) 全局嵌入点类
20、 脚本嵌入点类 $value: array(param = showmessage() 函数的参数数组, ) HookId_output($value) 模块执行完毕,模板输出前被调用 global_HookId() 模块执行完毕,模板输出前被调用 showmessage() 执行时调用 HookId_message($value) ad_adId($value) 相应的广告位中调用 $value: array(params = 广告位参数,content = 当前广全局嵌入点类 函数名为广告位脚本 ID 如:告位原本将要显示的内容, 脚本嵌入点类 ad_headerbanner() )篇二:
21、图文解说教你制作discuz模版 模板制作前请将你的界面设计好,并制作成html+CSS的格式。这里我就以大魔王的“蓝色经典”作为样版(知识共享,希望大魔王不要介意,如有侵权,请及时通知我)。效果图如 下: (图1) 在开始前,先了介绍一下discuz!的几个模板文件: 1、 header.htm -页面头部 2、 discus.htm- -论坛首页 3、 footer.htm- -页面底部 4、 viewthread- -查看帖子内容 discuz!论坛的页面通常是几个模板文件共同作用下达到的效果,如图1就是 header.htm+discus.htm+footer.htm这三个文件共同作用
22、的效果。 Heaer.htm对应的是:(图2) Footer.htm对应的是: (图3) 剩下的就是discuz.htm文件显示的了。 当然你要将首页显示的效果就制作成一个文件模板也是可以的,这里之所以分开,是因为header.htm和footer.hmt文件通常还会被其它的模版文件引用。也就是说,其它的页面(比如发贴的页面)的头部、底部与首页的头部、底部完全一样,分开来写就可以达到重复利用, 减少劳动的效果。 下面我们就开始制作: 首先,现在我要制作的这套模板叫test,那么我就在templates目录下建立一个test目录。在test目录下再新建一个images文件夹用于存放这套模板的图片
23、,把切好的所有图片保存到这个文件夹中。templates/test文件夹用于存放这套模板的htm文件,在这个目录中新建三个文件header.htm、discuz.htm、footer.htm,打开你设计好的主页html文件,将你 想作为头部的那一段代码复制粘贴到header.htm文件中, 相应的将作为底部的那一段代码复制粘贴到footer.htm文件中,其余的代码复制粘贴到 discuz.htm文件中。 最后在discuz.htm文件的最顶部和最底部分别加上:subtemplate header 和 subtemplate footer 这两句算是discuz的语言,意思是将header.h
24、tm和footer.htm文件包含进来,这样就构 成了一个完整的主页面了。 接下来的工作要在论坛后台设置中来完成 (1) 进入论坛点击 “系统设置 界面 模板管理”, 在新增模板后填 入模板名称,模板文件所在目录,板权信息然后提交即可!如图4:(图4) (2) 在“界面 风格管理” 中,在新增界面风格后填入方案名称“test”然 后提交即可! (3) 提交方案名称后,您就可以在界面风格中看到您所定义的新的风格方案。如 下图: (图5) 注意上面用红色圆圈圈起来的那幅模版预览图,你的是不是没有显示出来?这需要将你的首页的效果图做成110x120并命名为preview.jpg,将这图片放到test
25、目录下就可以了。到此,一套新的风格模板方案就添加到模板库里了,但还不是我们需要的最终效果,接下来要 对模板文件继续进行 调整,以达到想要的最终效果 (4) 点击 编辑 后就可以进入该模板的风格配色方案的编辑页面,按照图6把 各个对应参数填入相应位置。(图6) 填写好后,点击“提交”,更新一下缓存,浏览论坛首页出现下图: (图7) 呵呵,有内容出来了,可是排版上却变得乱七八糟了,这是因为还没有引入CSS文件。这时将原来设计好的CSS文件放到你模板目录下(templates/test),并将它重命名为“css_append.htm”(注意:改后的文件名是css_append,后缀名是htm)。接着
26、打开header.htm文件,找到你引入CSS文件的语句,这会因为引入的语句不同而不同,我这里是<style type=text/cssimport url(css/style.css);</style将这个替换为: $rsshead $extrahead subtemplate css_script 这样就可以将你的CSS文件引入了。进入后台更新一下缓存,现在的效果图如下: (图8) 这样就整齐了许多,这时你是不是发觉少了点东西?没错,图片没有显视出来。下面我们先将背景图(也就是CSS文件中引入的图片)显示出来。打开css_append.htm文件,找到所 有你引入图片的地方,将
27、路径替换为“STYLEIMGDIR”。例如:这里有一句: #footerpadding:1em 0;background:url(images/footer_bg.gif) 将它改为: #footerpadding:1em 0;background:url(STYLEIMGDIR/footer_bg.gif) repeat-x top; STYLEIMGDIR实际上是discuz的一个变量,当模板被解释时,就会用一个值来替换这个变量,这个变量的值可以在后台设置。进入后台后点击“界面 风格管理”出现下图: 篇三:教你Discuz模板制作详细步骤 接触Discuz! 有一段时间了,使用的风格都是别
28、人的免费品。一来自己的美工水平实在不行,二来网上很少有比较完整的模板制作教程。因为工作的需要,现特写了一份模板的制作教程。小弟才疏学浅,不对之处还请指正。 模板制作前请将你的界面设计好,并制作成html+CSS的格式。这里我就以大魔王的“蓝色经典”作为样版(知识共享,希望大魔王不要介意,如有侵权,请及时通知我)。效果图如下: (图1) 在开始前,先了介绍一下discuz!的几个模板文件: 1、 header.htm -页面头部 2、 discus.htm-论坛首页 3、 footer.htm-页面底部 4、 viewthread-查看帖子内容 discuz!论坛的页面通常是几个模板文件共同作用
29、下达到的效果,如图1就是header.htm+discus.htm+footer.htm这三个文件共同作用的效果。 Heaer.htm对应的是: (图2) Footer.htm对应的是: (图3) 剩下的就是discuz.htm文件显示的了。 当然你要将首页显示的效果就制作成一个文件模板也是可以的,这里之所以分开,是因为header.htm和footer.hmt文件通常还会被其它的模版 文件引用。也就是说,其它的页面(比如发贴的页面)的头部、底部与首页的头部、底部完全一样,分开来写就可以达到重复利用,减少劳动的效果。 下面我们就开始制作: 首先,现在我要制作的这套模板叫test,那么我就在te
30、mplates目录下建立一个test目录。在test目录下再新建一个images文件夹用于 存放这套模板的图片,把切好的所有图片保存到这个文件夹中。templates/test文件夹用于存放这套模板的htm文件,在这个目录中新建三个文件 header.htm、discuz.htm、footer.htm,打开你设计好的主页html文件,将你想作为头部的那一段代码复制粘贴到 header.htm文件中, 相应的将作为底部的那一段代码复制粘贴到footer.htm文件中,其余的代码复制粘贴到discuz.htm文件中。 最后在discuz.htm文件的最顶部和最底部分别加上:subtemplate header 和subtemplate footer 这两句算是discuz的语言,意思是将header.htm和footer.htm文件包含进来,这样就构成了一个完整的主页面了。 接下来的工作要在论坛后台设置中来完成 (1) 进入论坛点击 “系统设置 界面 模板管理”, 在新增模板后填入模板名称,模板文件所在目录,板权信息然后提交即可!如图4: (图4) (2) 在“界面 风格管理” 中,在新增界面风格后填入方案名称“test”然后提交即可! (3) 提交方案名称后,您就可以在界面风格中看到您所定义的新的风格方案。如下图:(图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年四川省人教版高中化学必修第一册第10章化学实验习题
- 2025-2026年机动车驾驶技能模拟测试卷
- 2025-2026年陕西省人教版九年级数学下册第10单元函数测试卷
- 再生料掺比对石墨改性PP吸收器制造成本与性能衰减的权衡分析
- 传统手工艺类文创项目ESG评价体系构建与投资溢价关联研究
- 2026年濮阳职业技术学院高职单招笔试综合素质试题库含答案解析3套试卷
- 2026年湘南幼儿师范高等专科学校高职单招笔试英语试题库含答案解析3套试卷
- 人教版小学三年级上册数学应用题专题训练(单元同步含解题思路)
- 2026年湖北水利水电职业技术学院高职单招笔试语文试题库含答案解析3套试卷
- 2026年深圳职业技术学院高职单招笔试英语试题库含答案解析3套试卷
- 职业技术学校《医药市场营销实务》课程标准
- 设计概述 课件-2024-2025学年高中美术人教版(2019)选择性必修4 设计
- 长亭送别贾分析
- 甲亢病的护理演讲
- 森林碳汇计量与管理方法
- 广东山之风环保科技有限公司广州分公司工业清洗剂生产及研发建设项目环境影响报告表
- 外研版英语七年级上册Starter单元试题(含答案)
- 汉字偏旁部首读法大全
- 2023年军转自荐信多篇
- 卫生部手术分级目录(2023年1月份修订)
- 电力工程专业设计工日定额9.26
评论
0/150
提交评论