discuz_x2_2.5模板与插件制作教程(权威版)

2013-01-04 10:14 阅读 2,273 次 评论关闭

模板套系与风格区别

  • 模板套系:统一的一类模板,集中放置并打包的系列。
  • 风格:应用某个模板套系,并改变其中变量设置的一个方案。

扩展模板创建

创建模板套系

  • 首先进入后台 - 界面 - 模板管理,扩展制作模板时需要创建一个专属套系用来后期修改
    • 基于“模板套系”可以扩展针对 ./template/default/ 目录中对的模板文件
    • 创建套系的原则是不破坏原有模板基础上进行全新的扩展模板设计

实例

  1. 在站点根目录 ./template/中创建新的目录如" ./template/mytest"
  2. 在 mytest 目录中创建必要子目录与文件如:

./template/mytest/common/

./template/mytext/common/extend_common.css

./template/mytext/common/extend_module.css

  • 其中common目录为公共模板目录,其内部新建的extend_common.cssextend_module.css为扩展型CSS文件,它们可以在./template/default/common/common.css的和module.css的基础上进行CSS代码的覆盖性扩展
  • 如果需要替换论坛首页模板,可以新建 ./template/mytext/common/forum/discuz.htm,或复制./template/default中的对应文件放在 mytext 对应目录,以在缓存生成时覆盖原有模板缓存,达到修改模板而不破坏原生模板的目的

后台风格管理

  • 进入后台 - 界面 - 风格管理
    • “风格管理”可以对已有风格进行风格变量的编辑,也可以基于前面创建的“模板套系”来全新开辟新的风格

新建风格

  • 后台风格管理中,可以通过新增复制原有风格进行新建风格的操作
  • 新建风格之后,需要编辑它,调整里面的“匹配模板”为上面创建的新套系即可

风格管理编辑页面中重点风格常量介绍

  • 匹配模板:对应的模板套系
  • 扩展配色:此风格基础上可用于用户切换配色方案的扩展,它对应 ./template/mytest/style/ 目录中的样式文件。全新创建时应在./template/mytest/style/目录中建立如t1/style.css之后方能生效
  • 默认配色:指定站点访问时,用户首先看到的配色方案
  • 默认表情分类:对应后台 - 界面 - 表情管理中所启用的表情
  • 界面基础图片目录:可用于更改模板图片目录,在CSS文件中使用{IMGDIR}的常量进行输出,在Discuz! X2版本之后的模板中需要使用$_G['style']['imgdir']
  • 扩展图片目录:用来更改扩展图片目录,在CSS文件中使用{STYLEIMGDIR}的常量进行输出,在Discuz! X2版本之后的模板中需要使用$_G['style']['styleimgdir']
  • 其他风格常量:以上没有提到风格常量,均可以在后台取得以花括号框选的常量用以在CSS文件中使用(X2以后的模板中均需要$_G['style']中对 应的数组键值),涉及到CSS样式的动态变更,可以在修改对应设置如:正常字体大小 {FONTSIZE}:12px/1.5,则直接修改程序运行中CSS缓存中的值
  • 自定义模板变量 - 新增:可以根据扩展需求,针对个性化的CSS进行全局的定义

 

插件设计的准备工作

插件实现流程

开始编写社区插件,您应当首先对插件实现的流程有一个大致的了解,以下是我们推荐的插件编写流程:

  • 熟练使用 Discuz! 社区系统后,对希望完善或补充的个性化功能进行评估,进而提出插件的功能需求。
  • 对插件做一个概括性的设计,例如:需要使用什么菜单、什么参数,配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。
  • 阅读本文档并在系统设置中实际体验 Discuz! 插件接口所实现的功用,例如:您的插件应当如何设计才能良好的挂接到社区系统中来。插件接口能够实现哪些功能、不能实现哪些功能,插件为此而需要做的优化、改造和取舍。
  • 编写相应程序代码和模板语句,实现所需的功能并进行代码测试、兼容性测试和代码改进。
  • 如果需要公开您的插件,可以用插件导出的方式,将插件配置信息导出到一个 XML 文件中,连同相应的程序和模板文件一同打包。同时,编写一个适合新手的插件的说明书也是必不可少的,其中包括:插件适用的 Discuz! 版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等等。
  • 将插件提供给他人,或自己使用,根据使用者反馈,对插件进行完善。插件实现流程至此结束。

 

文件命名规范

Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:

  • 可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名。
  • 被普通程序文件引用的程序文件,以 .inc.php 后缀命名。
  • 被普通程序文件,或引用程序文件引用的函数库或类库,以 .func.php(函数库) 或 .class.php(类库) 后缀命名。
  • 模板文件,以 .htm 后缀命名,插件模板文件存在于 source/plugin/identifier/template/ 目录中,手机版插件模板存在于 source/plugin/identifier/template/mobile/目录中
  • 模板语言包文件,以 .lang.php 后缀命名,插件语言包文件开发时存放于 data/plugindata/ 目录中,文件名为identifier.lang.php。
  • 动态缓存文件,存放于 ./data/cache 目录中,依据不同的功用进行独立的命名。
  • 使用后台数据备份功能生成的备份文件,通常以 .sql 为后缀,存放于 data/ 目录中。
  • 有些目录中存在内容为空白的 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/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['username'](加了 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']。
  • 预置读入了每个模块的各种设置变量。
  • [X2.5变更内容] $_G['username'] 将不进行 addslashes 处理。

插件接口概述

使用管理员账号登录 Discuz! 管理中心,在顶部菜单将可以看到“插件”菜单。“插件列表”列出了所有已安装的插件,是控制插件打开与否、设计插件模块、菜单、参数和使用权限的地方,插 件开发者可以依照设计意图,在此进行插件的初步设置,这里同时也提供插件导入和插件开关的功能,用于导入他人设计的插件和对插件的可用状态进行变更。

开始编写一个新插件,请首先打开 config/config_global.php 文件,在文件结尾添加以下代码开启插件设计者模式。

$_config['plugindeveloper'] = 1;

在插件管理中选择“设计新插件”,填写插件名称,名称用于表明此插件的用途,例如设置为“虚拟银行插件”。惟一标识符用于在后续的插件模块中调用本 插件,不可与现有插件重复,命名规则限制与 PHP 变量命名相同,虽然初次设置后仍可改动,但强烈建议一次性将此配置设置好,否则可能涉及到很多代码方面的变更,增加编码的麻烦。请注意:惟一标识符请不要 设置的过短,或使用有可能与其他插件重复的命名,例如制作此插件的公司叫做 Comsenz Inc.,插件名称是“虚拟银行插件”,惟一标识符可设置为“comsenz_virtual_bank”。最后在 source/plugin/ 目录中创建与唯一标识符同名的目录名,如 source/plugin/comsenz_virtual_bank/。
在插件管理中添加插件后,仅仅是增加了一条插件记录,后面还需要很多相关的设计和设置。在列表中选择插件的“详情”进入插件的详细设置。插件设置分为三个部分:

插件模块

。。。 。。。

下载查看完整版本的discuz_X2.5模板与插件制作教程——DZ开发必备资料:
更多discuz_X2.5二次开发必备资料:

【discuz开发资料】discuz_X2.5表结构解析及相关资料下载

 下载查看完整版本的discuz_X2.5表结构解析——DZ开发必备资料:

discuz_X2.5表结构.doc

 下载查看完整版本的discuz_X2.5目录结构解析——DZ开发必备资料:
版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:discuz_x2_2.5模板与插件制作教程(权威版) | 猎微网

评论已关闭!