插件discuz x2 2.5模板与插件制作教程(权威版)

discuz模板制作  时间:2021-01-29  阅读:()

模板套系与风格区别

 模板套系统一的一类模板集中放置并打包的系列。

 风格应用某个模板套系并改变其中变量设置的一个方案。

扩展模板创建

创建模板套系

 首先进入后台-界面-模板管理扩展制作模板时需要创建一个专属套系用来后期修改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()

BuyVM($5/月)不限流量流媒体优化VPS主机 1GB内存

BuyVM商家属于比较老牌的服务商,早年有提供低价年付便宜VPS主机还记得曾经半夜的时候抢购的。但是由于这个商家风控非常严格,即便是有些是正常的操作也会导致被封账户,所以后来陆续无人去理睬,估计被我们风控的抢购低价VPS主机已经手足无措。这两年商家重新调整,而且风控也比较规范,比如才入手他们新上线的流媒体优化VPS主机也没有不适的提示。目前,BuyVM商家有提供新泽西、迈阿密等四个机房的VPS主机...

新注册NameCheap账户几天后无法登录原因及解决办法

中午的时候有网友联系提到自己前几天看到Namecheap商家开学季促销活动期间有域名促销活动的,于是就信注册NC账户注册域名的。但是今天登录居然无法登录,这个问题比较困恼是不是商家跑路等问题。Namecheap商家跑路的可能性不大,前几天我还在他们家转移域名的。这里简单的记录我帮助他解决如何重新登录Namecheap商家的问题。1、检查邮件让他检查邮件是不是有官方的邮件提示。比如我们新注册账户是需...

Hostodo:$19.99/年KVM-1GB/12GB/4TB/拉斯维加斯

Hostodo发布了几款采用NVMe磁盘的促销套餐,从512MB内存起,最低年付14.99美元,基于KVM架构,开设在拉斯维加斯机房。这是一家成立于2014年的国外VPS主机商,主打低价VPS套餐且年付为主,基于OpenVZ和KVM架构,产品性能一般,数据中心目前在拉斯维加斯和迈阿密,支持使用PayPal或者支付宝等付款方式。下面列出几款NVMe硬盘套餐配置信息。CPU:1core内存:512MB...

discuz模板制作为你推荐
可爱桌面背景图片卡通壁纸谁有p图软件哪个好用p图软件哪个好宝来和朗逸哪个好大众朗逸和宝来,哪个好点?播放器哪个好安卓手机视频播放器哪个好点qq空间登录qq空间如何登陆群空间登录手机能否登录群空间,如何登录qq空间登录电脑怎么用电脑登陆手机版QQ空间辽宁联通网上营业厅中国联通网上营业厅固定电话费查询上海dns服务器地址中国主要城市DNS服务器IP地址列表360云盘网页版360云盘网页版在哪里登录呀?
mysql虚拟主机 移动服务器租用 中文域名交易中心 NetSpeeder 美国php空间 免费网络电视 godaddy域名证书 个人免费主页 闪讯官网 独享主机 东莞服务器托管 阿里云邮箱登陆地址 工信部icp备案查询 中国电信宽带测速 windowsserver2008 winserver2008 ubuntu安装教程 香港打折信息 sockscap教程 免费空间申请 更多