discuz学习说明书
DiscuzX3.x模板插件开发制作教程(从入门到精通)

一、开发插件所需资料与工具1、DiscuzX3 插件机制插件机制Discuz! 拥有一套完整的插件机制。
合理使用插件机制,你可以更好的将自己的个性功能需求整合到Discuz!产品中的同时,保持代码独立,并且不受后续Discuz!产品版本升级的影响。
我们鼓励并推荐,使用插件机制进行个性需求定制和研发。
插件设计的准备工作插件实现流程开始编写社区插件,您应当首先对插件实现的流程有一个大致的了解,以下是我们推荐的插件编写流程:∙熟练使用Discuz! 社区系统后,对希望完善或补充的个性化功能进行评估,进而提出插件的功能需求。
∙ 对插件做一个概括性的设计,例如:需要使用什么菜单、什么参数,配置哪些选项、数据结构如何设计、前后台实现哪些功能等等。
∙ 阅读本文档并在系统设置中实际体验Discuz! 插件接口所实现的功用,例如:您的插件应当如何设计才能良好的挂接到社区系统中来。
插件接口能够实现哪些功能、不能实现哪些功能,插件为此而需要做的优化、改造和取舍。
∙ 编写相应程序代码和模板语句,实现所需的功能并进行代码测试、兼容性测试和代码改进。
∙ 如果需要公开您的插件,可以用插件导出的方式,将插件配置信息导出到一个XML 文件中,连同相应的程序和模板文件一同打包。
同时,编写一个适合新手的插件的说明书也是必不可少的,其中包括:插件适用的Discuz! 版本、功能概述、兼容性声明、安装方法、使用方法、卸载方法等等。
∙ 将插件提供给他人,或自己使用,根据使用者反馈,对插件进行完善。
插件实现流程至此结束。
∙文件命名规范Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范:∙ 可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名。
∙ 被普通程序文件引用的程序文件,以 .inc.php 后缀命名。
∙ 被普通程序文件,或引用程序文件引用的函数库或类库,以 .func.php(函数库) 或.class.php(类库) 后缀命名。
discuz模版教程

第1步:进入版块内点击右上角的DIY(如下图,注:静态化无法DIY,请取消静态化)第2步:拉好框架(先放3:1的,再将后两个框架放入其中)如下图所示(下面说的都无需再拉多个框架,这一步已把该拉的红框都拉好了):第3步:设好红框(就是指向出现红色的框架,在这我将其称为红框)的样式参数(如下图,对比看说明)图中1:边框,请将默认的【大小】改成0(因为这样不会显示边框线,不选则会显示官方默认的边框线)图中2:边框一定要为0,这样是最大化,0和不填是不一样的!图中3:边框一定要为10,这样是和下方框体的距离,若填0则会连在一起!图中4:此处请一定不要选择【无边框框架】否则你用TAB框架则在标题加链接时会成白色,留空不选即可!第4步:先DIY右边的。
请拉一个红框的框架到图中右边的框架内,然后点击样式,如图:图中1:边框线颜色为:1PX。
我用的是粉红色!根据自己的爱好选色!图中2:上为0(但官方默认的是1PX的距离,所以该处请填0,其它的请设置为1)第5步:红框的边框线,粉红的(如下图)图中1:请设为4PX(想更粗请设大点)图中2:左10PX(是与左边的框架保持10PX的距离,要不会连在一起)第6步:拉一个论坛类的帖子模块放在上一步设置好的红框内,点样式设置参数(如下图)图中1:链接字体,12PX是官方默认的,可以留空。
后面的是字体颜色!图中2:请选边框为0,也可以留空(这里和红框不一样,留空也不会有官方的默认边线)。
图中3:外边距设置和内边距有所不一样,自己理解,请看图中设置,假如你把图中右10PX 输入到下面的内边距的话,标题就偏了~最好这样搞!图中4:内边距的下2PX是为了对平左边框架,所以才设置为2,你可以根据右边的边框线对平(这里请善用QQ截图功能,最后我会教你如何用QQ截图进行DIY较正)第7步:标题,我在这用的方法是不正规设置方法,主要是考虑到美化,用的是图片(看下图)图中1:你看错了,那不是空的,是在智能ABC(我打五笔的)输入V+1这是空格白键,无字体的,但是会有字体一样,因为官方是默认无字体的话是无法设置标题的,所以用这招骗过官方!图中2:图片路径,为不平铺!0K,左边的DIY完成,先讲到这,顶的人多,再教你DIY另一边的~最后说一下我DIY用到的常用工具:1:QQ截图,我设置了快键(ALT+Q)方便截图及对齐边框,效果如下,自己理解。
discuz模板使用说明

Discuz! 提供了方便的界面打包程序,前面已对其格式做了介绍,将导出信息的内容粘贴到 系统设置 中 风格方案 中的导入界面方案中,执行即可。程序会自动解析数据内容,恢复相关的界面设置,自定义替换变量和所需的模板设置。如果被导出界面使用了非默认模板,必须将 ./templates 目录属性设置为 777,以便导入程序自动建立模板记录和文件夹。
· [<span class="listA">$value[typename]</span>]<a
class="listA" href="$value[url]" title="$value[subjectall]" target="_blank">$value[subject]</a></div>
这是一个典型的条件模板,当条件 expr1 为真时,显示模板 statement1 内容,否则当 expr2 为真时,显示模板 statement2 内容,否则显示模板 statement3 的内容。如同其他语言中的条件控制一样,其中 <!--{elseif expr}--> 和 <!--{else} --> 是非必须的。
{template name}
模板嵌入符,为了避免模板的冗长,可以使用本符号来将 name 模板的内容嵌入本模板中(实际上为引用)。
{ statement}
运行 PHP 语句体 statement。推荐只在特别必须的时候才使用该结构,因为它会破坏模板的结构和可读性。如 { echo 'template!';} 实现的功能为 echo 'template';
Discuz使用方法

为什么通过访问所有 .php 页面都会出现类似程序代码一样的信息?
这种情况是因为您的服务器上 PHP 语言支持环境没有被安装,或配置不正确。请自行安装,或向空间提供商寻求解决。
为什么软件提示 Unable to read xxx bytes in xxx.php in xx 这样的信息?
文件及目录结构
Discuz! 软件包通常以 tgz(tar.gz)或 zip 的格式压缩,绝大多数压缩软件可解开此类压缩格式的软件包,解压后的目录结构如下所示:
./users_guide.htm
./usersguide/
./upload/
*.php
install.php
您在正式安装以前,需要设置相关的目录属性,以便数据文件可以被 Discuz! 正确的读写。使用 FTP 软件登录您的服务器,将服务器上以下的目录属性设置为 777。
./templates
./templates/default
./templates/default/*.*
./attachments
testmail.php
upgrade(x).php
用户使用说明书(本文档)
用户使用说明书内容与图片目录
程序及相关文件(此目录中的内容需上传)
Discuz! 程序
Discuz! 安装脚本
论坛基本配置,安装前请修改本文件
邮件发送配置
网页新帖调用程ห้องสมุดไป่ตู้
系统设置程序目录
系统设置程序集
*.htm
*.lang.php
images/
attachicons/
avatars/
Discuz!X2 插件入门制作教程(二)-(管理中心)

系统常量
DX 里面对一些常量做了自己的定义,接下来的表格列举了,更多的变量可以使用附录里的
代码获得。
常量名
说明
DISCUZ_ROOT
网站的根目录
TIMESTAMP
程序执行的时间戳
CHARSET
程序的语言编码类型
IS_ROBOT
是否是机器访问
FORMHASH
HASH 值
全局变量
DX 的全局变量事实上全部压缩到了一个变量:$_G 里面,接下来的表格列举了常用的$_G
1. 您的网站或者测试站点可以正常使用 2. 您对 PHP 有基本的了解 3. 您对数据库有着基本的了解
复制代码
一旦您满足了上面的要求,那么您可以来了解 DX 的插件制作了。
网站的基本数据
在 DX 的这个框架中,我们会经常用到一些使用的数据,这些数据包括:系统常量、全局变
量、系统调用 ,首先我们从系统常量说起
1. 查看全部常量: 1. <?php 2. require_once './source/class/class_core.php'; 3. require_once './source/function/function_home.php'; 4. $discuz = & discuz_core::instance(); 5. $discuz->init(); 6. print_r(get_defined_constants()); 7. ?>
按照要求填写
搜海口论坛
填写好之后,就可以来添加管理中心的设置文件了,这里要注意:你的标识符一旦确定 就不能修改!并且,你所写的程序文件都应该放在:source/plugin/标识符/ 这个文件夹下 面,例如我们要设置下图的程序,文件:admincp.inc.php 应该放在该目录下即可。
在线论坛说明书

在线论坛网站说明书主要功能《在线论坛网站》主要提供了三种角色:游客(没有注册的用户)、已经注册的用户和后台管理员。
当游客进入论坛之后,只能对网站的首页进行浏览;而已经注册的用户进入论坛之后,可以发表自己的评论、并加以编辑等;管理员进入论坛之后,可以设置及更改整个论坛基本操作。
操作注意事项用户在使用《在线论坛网站》之前,应注意以下事项:(1)论坛系统主要由前台用户登录模块和后台管理员模块两部分组成。
在网站前台任何一个页面都可以通过单击“请先登录”超链接可进入后台登录页面;而从后台页面到前台页面也是相同的。
后台登录时,必须选中“管理员登录”复选框,而前台则不需要。
(2)当我们第一次进入前台登录模块时,我们要先注册一个自己的用户。
才可进入该论坛。
(3)本论坛的初始管理员名为:51aspx,密码为:51aspx,用户ID为1。
验证码:我们可以使用快捷的方法:“复制/粘贴”或“鼠标拖曳”的方法。
业务流程在使用本系统时,请按照以下流程进行操作:1 后台登录模块(1)当单击“管理用户”、“管理模块”、“管理帖子”超链接将进入各个模块中,模块中主要设置用户信息、模块信息、帖子信息等一些基本操作。
(2)当单击“发表帖子”超链接将进入该模块中,该模块可以根据自己的意愿发表喜欢的帖子。
(3)当单击“浏览模块”、“浏览帖子”、“精华帖子”超链接将进入各个模块中,各模块可以根据自己的需要随时查看这三个模块中的数量和信息。
(4)当单击“帮助”超链接将进入该模块中,该模块主要提供了一些帮助信息。
(5)当单击“索引”超链接将进入该模块中,该模块主要提供了以根据指定查询条件和查询关键字,查找出用户想要查看的帖子并且用户还可以单击帖子后面的“详细信息”超链接查看相应帖子的详细信息。
(6)当单击“忘记密码”超链接将进入该模块中,该模块主要提供了让已注册的用户找回自己的密码操作。
说明:找回密码主要分为三个页面来完成。
页面一:输入已注册的用户ID;页面二:系统会根据用户输入的ID号把相应的密码问题列出来,并提示输入密码问题答案;页面三,如果问题答案正确,则成功找回密码。
图文解说:Discuz论坛版块设置第二弹

图文解说:Discuz论坛版块设置第二弹Discuz论坛功能十分多,后台需要设置的地方也很多,很多新手看着都摸不着头脑,小编接着《图文解说:Discuz论坛基础设置第一弹》继续讲解,长沙seo这次分享的是后论坛增删版块和设置的方法。
安装好DZ后,登陆后台,点击论坛→版块管理。
小编以SEOWHY论坛为例,如下图:
按图中添加好相应的版块,后点击提交。
然后我们到首页预览,并对照下SEOWHY论坛。
图如下:
通过对比,这两个大板块的添加成功,但是可以看到,SEOWHY论坛子版块都是横向显示的,看起来也美观。
每行显示3个,那么如何设置呢?我们以第一个大板块“SEO交流区(三人行必有我师)”为例,点击图中的编辑版块,如图:
进入后,我们如下图在“论坛首页下级子板块”设置成3,也可以设置分区名称的颜色以及分区子版块的子版块横排显示个数。
如下图:
分区子版块的设置方法和分区设置多几个功能需要设置,可以添加子版块图标,定义图标大小,顶部图片,子版块颜色,版块URL转向和规则等。
如下图:
扩展设置、帖子选项、权限相关、积分策略和其他设置起来也比较简单,就不一一列出,站长可以按照自己的需求进行以下设定:
Discuz论坛版块增删和设置的方法就说到这,总的来说比较简单,不会的童鞋可以参照SEOWHY 的设置进行学习。
小编将会在第三弹继续为大家奉上DZ论坛其他设置的攻略,希望对使用Discuz做网站的新手站长们有帮助。
本文转自长沙seo:/jingyan/69.html,由站长龙俊原创编辑,转载请注明出处,小生不胜感激,谢谢!。
discuz使用手册

discuz使用手册
Discuz使用手册如下:
1. 安装:在电脑上下载安装lamp环境,可以phpstudy,然后安装。
下载discuz,这个要到官方论坛,专门有下载专区。
把discuz的upload复制
到phpstudy的网站目录。
在浏览器地址栏中输入localhost,进行安装就
可以了,都是自动的。
2. 删除回帖:在帖子页面,选中回帖右下方的多选框,点击“管理选项”中的“删除回帖”或者帖子底部的“删除”,输入操作理由,点击提交即可。
3. 移动主题:在版块页面或者帖子页面都可以操作,版块页面可以进行批量主题移动,帖子页面只能移动当前帖子。
操作页面针对移动方式有两个选项:移动主题、移动主题并在原来的版块中保留转向。
移动主题:主题直接被移动到目标版块。
保留转向:主题被移动到目标版块后在当前版块继续保留一个帖子链接,点击该链接则进入被移动到目标版块的帖子。
转向链接的帖子前面会有一个“移动”标志,并且帖子状态为锁定状态。
4. 屏蔽帖子:单帖屏蔽功能是一个超级实用的功能,它可以在版主认为用户发布的某个帖子不符合版规或内容有待商榷时使用。
希望以上信息能帮到您,如有疑问可查阅官网或咨询专业人士。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
discuz学习说明书广州短讯神州网络技术有限公司版权所有侵权必究目录W1 文档目的 (3)2 数据库 (3)2.1 Discuz6.0数据字典 (3)3 代码分析 (3)3.1 discuz分析 (3)3.1.1 文件结构分析 (3)3.1.2 install分析 (4)3.1.3 核心代码分析-global.func.php (6)3.1.4 核心文件common.inc.php篇 (9)3.1.5 Include包分析 (9)discuz学习说明书关键词:摘要:缩略语:1文档目的定义平台的整体情况与相关程序。
2数据库2.1Discuz6.0数据字典D:\soft\uchome\dz分析\数据字典\数据3代码分析3.1discuz分析3.1.1文件结构分析D:\soft\uchome\discuz分析\DZ论坛文./users_guide.htm 用户使用说明书(本文档)./usersguide/ 用户使用说明书内容与图片目录./upload/ 程序及相关文件(此目录中的内容需上传)*.php Discuz! 程序install.php Discuz! 安装脚本config.inc.php 论坛基本配置,安装前请修改本文件mail_config.inc.php 邮件发送配置whatsnew.php 网页新帖调用程序admin/ 系统设置程序目录*.php 系统设置程序集attachments/ 空目录,请设置属性777,用于存放附件customavatars/ 空目录,请设置属性777,用于存放上传头像forumdata/ 空目录,请设置属性777,用于存放备份及记录数据templates/ 空目录,请设置属性777,用于存放编译模板文件cache/ 空目录,请设置属性777,用于存放系统缓存templates/ 模板文件目录default/ 系统默认模板目录*.htm 系统默认模板文件*.lang.php 系统默认语言包文件images/ 图片文件目录attachicons/ 附件图标图片目录avatars/ 论坛提供头像图片目录common/ 公用图片目录default/ 系统默认风格图片目录smilies/ Smilies 图片目录stats/ 流量统计图片目录include/ 引用包含目录*.php 引用包含程序集plugins/ 空目录,用于存放插件程序./utilities/ 论坛附带工具repair.php 数据库修复工具restore.php 分卷备份数据恢复工具testmail.php 邮件发送测试工具upgrade(x).php 论坛升级程序3.1.2 install分析1、在代码的顶部引入error_reporting()方法,设定php的错误提示等级。
事实上php的配置文件可以配置,但是在每个文件重新设定这个错误提示等级,使错误提示更为灵活。
2、在某些条件下通过使用set_time_limit()设定运行时间,并且通过ob_start()打开输出缓冲器。
最好用@来屏蔽错误。
3、使用define()设定多个常量而不是变量供程序代码使用。
分析文件:discuz_version.php文件作用:定义版权的常量值1、因为这个文件是被引入调用其设定好的常量。
所以从理论上任何文件都能调用。
所以在一开始通过判断是否IN_DISCUZ为真,如果不是,则停止整个程序的运行。
2008年10月4日9:42:22分析文件db_mysql.class.php文件作用:数据库的链接类1、通过一个判断来决定是采用mysql_connect(非持续性)还是mysql_pconnect(持续性)2、通过判断来决定是采用mysql_unbuffered_query(执行操作,但不返回任何数据)还是mysql_query(执行操作,可返回数据)3、1和2两个经验点,大量使用了?:运算符;如:(exp1?(exp2):(exp3)).若exp1为真则exp2,反之exp3。
4、//mysql_num_fields-取得结果集中字段的数目function num_fields($query) {return mysql_num_fields($query);5、//释放结果内存function free_result($query) {return mysql_free_result($query);}2008年10月4日10:21:48总结:因为被包含文件可以通过路径进行访问,为了保护文件的安全性,DZ在所有需要引用其他文件的前面定义了一个常量IN_DISCUZ。
在被引入文件的头部对这个常量进行判断,如果没有这个常量,也就是直接通过路径进行访问的。
则不执行源代码中的任何部分。
这是个很好的保护源代码措施。
而且很简单。
3.1.3核心代码分析-global.func.php1、这个文件是常被引用的文件,所以开头还是采用了惯用的常量判断法。
防止被恶意浏览器直接打开2、加密函数authcode中的加密有多次的md5叠加加密。
保证密码的安全性。
在常有的思维中,一般是只加密了一次。
而在DZ的加密函数中。
加密算法很复杂。
分别从md5加密,字符随机截断加密,位运算加密和与密匙结合加密。
3、DZ的字符处理工作非常好。
虽然在下载的时候我们会选择utf-8还是gbk。
但是不管是处理字符还是处理数据库链接的时候都是第一考虑字符编码的地方。
在db_mysql.class.php文件的数据库链接上就判断了格式是什么。
代码如下$func = empty($pconnect) ? 'mysql_connect' : 'mysql_pconnect';//建立一个链接给类的属性link之中。
并且在建立链接的时候就设定编码方式是如何的。
if(!$this->link = @$func($dbhost, $dbuser, $dbpw, 1)) {$halt && $this->halt('Can not connect to MySQL server');} else {if($this->version() > '4.1') {global $charset, $dbcharset;$dbcharset = $dbcharset2 ? $dbcharset2 : $dbcharset;$dbcharset = !$dbcharset && in_array(strtolower($charset), array('gbk', 'big5', 'utf-8')) ? str_replace('-', '', $charset) : $dbcharset;$serverset = $dbcharset ? 'character_set_connection='.$dbcharset.', character_set_results='.$dbcharset.', character_set_client=binary' : '';$serverset .= $this->version() > '5.0.1' ? ((empty($serverset) ? '' : ',').'sql_mode=\'\'') : '';$serverset && mysql_query("SET $serverset", $this->link);}再在global.func.php文件中的字符串处理也是考虑了字符串的编码格式问题的。
有个全局变量$charset就是用来设定编码格式的。
Cutstr里根据这个变量的值来对字符串进行处理。
另,在cutstr()函数里,在进行截断之前会将字符串中的特殊字符进行处理。
$string = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $string);在处理截断之后,再将其还原。
$strcut = str_replace(array('&', '"', '<', '>'), array('&', '"', '<', '>'), $strcut);这就能解释为什么DZ论坛截断后的文字依然符合原有的文字格式。
4、对html代码格式自定义替换。
但这里要注意一下DZ考虑得很周到。
if(is_array($string)) {foreach($string as $key => $val) {$string[$key] = dhtmlspecialchars($val);//如果是数租,遍历数组再调用自身的这个函数对单个字符处理。
}判断如果传入的字符串是数组呢?恩。
按我的想法是,只封装字符的替换部分。
但他这里封装得很好。
因为我在调用这个函数的时候就不用担心我传递的是什么格式的字符串了。
5、将页面跳转封装在了dheader函数里6、//典型的减少代码重复输入函数。
处理好email字符串。
只需要emailconv(email地址)就能返回一个已经编码好的email地址了function emailconv($email, $tolink = 1) {$email = str_replace(array('@', '.'), array('@', '.'), $email);return $tolink ? '<a href="mailto: '.$email.'">'.$email.'</a>': $email;}7、//对文件名进行截断处理,输入文件名,返回处理后的文件名function fileext($filename) {return trim(substr(strrchr($filename, '.'), 1, 10));}8、 DZ处理浏览器直接输入路径访问问题是用的判断常量法。