模板套系与风格区别
模板套系统一的一类模板集中放置并打包的系列。
风格应用某个模板套系并改变其中变量设置的一个方案。
扩展模板创建
创建模板套系
首先进入后台-界面-模板管理扩展制作模板时需要创建一个专属套系用来后期修改o 基于“模板套系”可以扩展针对./template/default/ 目录中对
的模板文件o 创建套系的原则是不破坏原有模板基础上进行全新的扩展模板设
计
实例
1.在站点根目录./template/中创建新的目录如" ./template/mytest"
2.在mytest 目录中创建必要子目录与文件如
./template/mytest/common/
./template/mytext/common/extend_common.css
./template/mytext/common/extend_module.css
其中common目录为公共模板目录其内部新建的extend_common.css、extend_module.css为扩展型CSS文件它们可以
在./template/default/common/common.css的和module.css的基础上进行CSS代码的覆盖性扩展
如果需要替换论坛首页模板可以新
建./template/mytext/common/forum/discuz.htm或复
制./template/default中的对应文件放在mytext对应目录 以在缓存生成时覆盖原有模板缓存达到修改模板而不破坏原生模板的目的后台风格管理
进入后台-界面-风格管理
o “风格管理”可以对已有风格进行风格变量的编辑也可以基于前
面创建的“模板套系”来全新开辟新的风格
新建风格
后台风格管理中可以通过新增和复制原有风格进行新建风格的操作 新建风格之后需要编辑它调整里面的“匹配模板”为上面创建的新套系即可
风格管理编辑页面中重点风格常量介绍
匹配模板对应的模板套系
扩展配色此风格基础上可用于用户切换配色方案的扩展它对应./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进行全局的定义
插件设计的准备工作
插件实现流程
开始编写社区插件您应当首先对插件实现的流程有一个大致的了解以下是我们推荐的插件编写流程
熟练使用D i s cuz!社区系统后对希望完善或补充的个性化功能进行评估进而提出插件的功能需求。
对插件做一个概括性的设计例如需要使用什么菜单、什么参数配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。
阅读本文档并在系统设置中实际体验D i s cuz!插件接口所实现的功用例如您的插件应当如何设计才能良好的挂接到社区系统中来。插件接口能够实现哪些功能、不能实现哪些功能插件为此而需要做的优化、改造和取舍。
编写相应程序代码和模板语句实现所需的功能并进行代码测试、兼容性测试和代码改进。
如果需要公开您的插件可以用插件导出的方式将插件配置信息导出到一个XML文件中连同相应的程序和模板文件一同打包。同时编写一个适合新手的插件的说明书也是必不可少的其中包括插件适用的D i s cuz!版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等等。
将插件提供给他人或自己使用根据使用者反馈对插件进行完善。插件实现流程至此结束。
文件命名规范
Discuz!按照如下的规范对程序和模板进行命名请在设计插件时尽量遵循此命名规范
可以直接通过浏览器访问的普通程序文件 以.php后缀命名。
被普通程序文件引用的程序文件 以.inc.php后缀命名。
被普通程序文件或引用程序文件引用的函数库或类库 以.func.php(函数库)或.c l a s s.php(类库)后缀命名。
模板文件以.htm后缀命名插件模板文件存在于source/plugin/identifier/template/目录中手机版插件模板存在于source/plugin/identifier/template/mobile/目录中 模板语言包文件 以.l ang.php后缀命名插件语言包文件开发时存放于data/plugindata/ 目录中文件名为iden tifier.lang.php。
动态缓存文件存放于./data/cache 目录中依据不同的功用进行独立的命名。 使用后台数据备份功能生成的备份文件通常以.sql为后缀存放于data/ 目录中。 有些目录中存在内容为空白的index.htm文件此类文件是为了避免Web服务器打开Directory Index时可能产生的安全问题。
[X2.5新增内容]从Discuz!X2.5开始产品对数据表进行了封装封装后的文件统一命名为Tab l e类通过“C: :t(Tab l e类文件名)”方式调用。插件如需封装自己的数据表可将Table类文件存放于source/plugin/identifier/table/ 目录下并以table_表名.php格式命名详见X2.5的新程序架构。class_core.php模块功能白皮书source/class/class_core.php是Discuz! 的通用初始化模块程序其几乎被所有的外部代码所引用在您开始插件设计之前可以先对该模块的大致功能做一定的了解。 class_core.php主要完成了以下任务
对不同PHP及操作系统环境做了判断和兼容性处理使得Discuz!可以运行于各种不同配置的服务器环境下。
初始化常量IN_D I S CUZ为TRUE用于include或require后续程序的判断避免其他程序被非法引用。
读取社区程序所在绝对路径存放于常量DISCUZ_ROOT中。
加载所需的基本函数库s ource/functi on/function_core.php。
通过config/config_global.php中提供的数据库账号信息建立数据库连接。Discuz!支持数据表的前缀如需获得表的全名可使用“DB: :table('tablename')”方式。 判断用户是否登录如登录标记$_G['uid']为非0 同时将$_G['us ername'] 加了addslashe s的用户名可用于不加修改的插入数据库、 $_G['memb er']['us ername']
原始的用户名可用于页面显示、 $_G['member']['password'] 用户密码的MD5串等相应用户信息赋值其他用户信息存放于$_G['memb er'] 更多信息可通过“getuserprofile()”获取。
判断用户管理权限将管理权限标记$_G['a dmi ni d']为1~3中间的值。 0代表普通用户 1代表论坛管理员 2代表超级版主 3代表论坛版主。 将用户权限按照其所在的主用户组ID标记为$_G['groupi d'] 相关权限从该$_G['groupi d']所对应的系统缓存中读出存放于$_G['group'] 。
预置读入了每个模块的各种设置变量。
[X2.5变更内容]$_G['us ername']将不进行adds la she s处理。
插件接口概述
使用管理员账号登录Discuz!管理中心在顶部菜单将可以看到“插件”菜单。“插件列表”列出了所有已安装的插件是控制插件打开与否、设计插件模块、菜单、参数和使用权限的地方插件开发者可以依照设计意图在此进行插件的初步设置这里同时也提供插件导入和插件开关的功能用于导入他人设计的插件和对插件的可用状态进行变更。
开始编写一个新插件请首先打开config/config_global.php文件在文件结尾添加以下代码开启插件设计者模式。
$_config['plugindeveloper' ] = 1 ;
在插件管理中选择“设计新插件” 填写插件名称名称用于表明此插件的用途例如设置为“虚拟银行插件” 。惟一标识符用于在后续的插件模块中调用本插件不可与现有插件重复命名规则限制与PHP变量命名相同虽然初次设置后仍可改动但强烈建议一次性将此配置设置好否则可能涉及到很多代码方面的变更增加编码的麻烦。请注意惟一标识符请不要设置的过短或使用有可能与其他插件重复的命名例如制作此插件的公司叫做Comsenz Inc. 插件名称是“虚拟银行插件” 惟一标识符可设置为“comsenz_virtual_bank” 。最后在source/plugin/ 目录中创建与唯一标识符同名的目录名如source/plugin/comsenz_virtual_bank/。
在插件管理中添加插件后仅仅是增加了一条插件记录后面还需要很多相关的设计和设置。在列表中选择插件的“详情”进入插件的详细设置。插件设置分为三个部分
插件模块
插件模块分为程序链接、扩展项目和程序脚本3类o 程序链接主导航项目可在主导航栏增加一个菜单项可自主指派菜单链接的URL也可以调用插件的一个模块模块文件名指派为source/plugin/插件目录/插件模块名.inc.p hp”。注意 由于引用外部程序因此即便设置了模块的使用等级您的程序仍需进行判断使用等级是否合法。o 程序链接主导航项目 -插件菜单可在主导航栏的插件子菜单中增加一个菜单项。o 程序链接顶部导航项目、底部导航项目、快捷导航项目、家园导航项目可在各个导航中增加一个菜单项。o 扩展项目个人设置可在个人设置中增加一个菜单项。o 扩展项目个人设置-个人资料可在个人设置的个人资料页上部增加一个菜单项。o 扩展项目个人设置-积分可在个人设置的积分页上部增加一个菜单项。o 扩展项目站点帮助可在站点帮助中增加一个菜单项。o 扩展项目我的帖子可在我的帖子中增加一个菜单项。o 扩展项目 门户管理可在门户管理面板上部增加一个菜单项。o 扩展项目论坛管理-基本可在前台论坛管理面板侧边上部增加一个菜单项。o 扩展项目论坛管理-工具可在前台论坛管理面板侧边下部增加一个菜单项。o 扩展项目管理中心可在后台插件栏目中为此插件增添一个管理模块。o 程序脚本页面嵌入-普通版设置一个包含页面嵌入脚本的模块该模块用于在普通电脑访问的页面显示。模块文件名指派为source/plugin/插件目录/插件模块名.class.php”。 页面嵌入将在后面的《页面嵌入模块开发》中详细说明o 程序脚本页面嵌入-手机版设置一个包含页面嵌入脚本的模块该模块用于在手机访问的页面显示。o 程序脚本特殊主题设置一个特殊主题脚本的模块模块文件名指派为source/plugin/插件目录/插件模块名.class.php”。 特殊主题将在后面的《特殊主题模块开发》中详细说明
您可以为每个模块设置不同的使用等级例如设置为“超级版主” 则超级版主及更高的管理者可以使用此模块。
扩展项目模块可以在社区的特定位置扩展出新的功能通常用于扩展新的设置项目。项目的脚本文件以. inc.php结尾如test. inc.php 模版为固定文件名位于插件目录的template/子目录中文件名与脚本名同名如test.htm扩展名为.htm。添加相应的扩展项目模块时需注明程序模块、菜单名称。例如我们添加个人面板项目程序模块为test菜单名称是“测试” 当插件启用后个人面板即家园的设置中会出现“测试”拓展项目。
在新插件内核中通过plugin.php方式访问的插件可直接通过plugin.php?id=xxx:yyy方式调用而无需再在后台定义为普通脚本模块只要source/plugin/xxx/yyy. inc.php文件存在即可。如果xxx和yyy同名可直接通过plugin.php?id=xxx方式访问。
插件变量配置
插件接口中提供了一个通用的插件配置管理程序在大多数情况下可实现插件的参数配置省却了插件开发者自行编写后台管理模块即上面提到的“扩展项目管理中心”模块的麻烦。通常情况下应优先使用通用插件配置管理程序来实现插件的参数配置只有在通用程序确实无法实现时才自行编写后台管理模块。输入配置名称和配置变量名、选择合适的配置类型后 即可为此插件增加一个配置变量点“详情”可以编辑此配置变量的更多信息。为了方便插件程序调用使用者配置好的参数配置变量同样被存放在了缓存文件中读取方法将在后面的《插件的参数读取与缓存控制》中详细说明。
注意您只有在插件管理中将插件设置为“可用” 以上设置才能生效。插件的参数读取与缓存控制
编写插件程序时可能需要读取一些插件的信息如果插件需要使用者进行配置还需要读取使用者设置的参数值。D i s cuz!允许插件程序使用数据库读取和缓存读取这两种方法获取插件信息和参数。D i s cuz!的插件接口已经对插件信息进行了合理的缓存使用缓存读取的方式将比数据库读取速度更快消耗的资源更是几乎可以忽略不计。缓存读取唯一的局限是需要插件使用插件接口提供的通用后台管理程序。如果使用自定义后台模块的方式需要后台模块将参数存放到pluginvars数据表中才能被系统正常缓存。我们强烈推荐您通过缓存读取插件信息和配置数据。 由于调用系统缓存统一通过“loadcache()”函数调用并存放于$_G['cache']中因此“loadcache('plugin')”后插件的变量缓会存放于$_G['cache']['plugin']中。嵌入点插件和以plugin.php为主脚本调用的插件无需加载此缓存系统已自动加载了缓存。变量配置类型为“版块/*”的变量会保存在$_G['cache']['forums'][fid]['plugin']中。变量
配置类型为“用户组/*”的变量会保存在$_G['cache']['us ergroup_groupi d']['plugin']和$_G['group']['p lug i n']中。
页面嵌入类型脚本格式
<?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 . . . ;
}
. . . . . .
}
?>
plugin_
普通版脚本中的类名以plugin_开头。手机版脚本中的类名以mobileplugin_开头。
identifier
插件的唯一标识符在插件设置中设置。
CURSCRIPT
嵌入点位于的脚本名如forum.php为forum。
HookId
函数名 调用位置 位声明第一个参数含义置
脚
Ho okId() 所有模块执行前被调用 本入嵌
点
类
array(
' template' =>
当前要输出的模
=>Ho okI点 'values' =>类 showmessage的
信息变量,
)
全
类
HookId_message() showmessage()执行时调用 脚array(
本 'param' =>嵌 showmessage()入 函数的参数数组,点
点
common() 所有模块执行前被调用 入嵌点
caller函数的参数数组,
messagecutstr()调用
deletethread()
提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...
sparkedhost怎么样?sparkedhost主机。Sparkedhost于2017年7月注册在美国康涅狄格州,2018年收购了ClynexHost,2019年8月从Taltum Solutions SL收购了The Beast Hosting,同年10月从Reilly Bauer收购了OptNode Hosting。sparkedhost当前的业务主要为:为游戏“我的世界”提供服务器、虚拟...
日本vps云服务器怎么选择?很多人都会遇到日本vps和日本云服务器怎么选择的问题,日本云服务器具有免备案的特点。小编今天就分析一下日本云服务器价格多少钱,以方便大家选购的时候有个更加合适的取舍。日本云服务器租用前比较选择,高性能、安全、高效、免备案日本云服务器是很关键的因素。那么,日本云服务器该怎么选择呢?日本作为我们的邻国,与其贸易、文化往来是比较多的。日本云服务器价格多少钱一年?一、日本·CN...