- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章Discuz二次开发基本知识总结由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
一) Discuz!的文件系统目录 。
注:想搞DZ开发,就得弄懂DZ中每个文件的功能.
a) Admin:后台管理功能模块 。
b) Api:DZ系统与其它系统之间接口程序 。
c) Archiver:DZ中,用以搜索引擎优化的无图版 。
d) Attachments:DZ中 ,用户上传附件的存放目录 。
e) Customavatars:DZ中,用户自定义头像的目录 。
f) Forumdata:DZ缓存数据的存放目录 。
g) Images:DZ模板中的图片存放目录 。
h) Include:DZ常用函数库,基本功能模块目录 。
i) Ipdata:DZ统计IP来路用的数据 。
j) Plugins:DZ插件信息的存放目录 。
k) Templates:DZ模板文件的存放目录 。
l) Wap:DZ无线,Wap程序处理目录 。
二) 必须记熟Discuz!数据库设计的每个表的功能,每个表中每个字段的功能.
关于DZ数据库设计文档,请参阅DZ相关的项目文档(请从本贴附件中下载) 。
三) Discuz!的流程控制 。
a) 后台流程控:DZ后台所有的功能,均需要注册到admincp.php文件,每个功能都至少有一个或一个以上的Action(动作),在admincp.php中,可以定义Action的执行权限,分别为:“admin==1”管理员,或“admin==2 || admin==3”超级版主和版主,每个Action对应一个脚本文件,脚本文件的命名为action.inc.php(*.inc.php),并存放在admin目录下,如执行:admincp.php?action=dodo,相当于执行admin目录下的dodo.inc.php文件 。
b) 前台流程控制:前台的流程控制比较简单:流程是自由的,如:
首页:index.php 。
会员注册:register.php,
会员登录:logging.php 。
发贴程序:post.php 。
会员信息:member.php 。
论坛内容:forumdisplay.php 。
查看贴子:viewthread.php 。
…大部分功能,此处不一一列出… 。
c) DZ根目下的config.inc.php属于整个DZ系统的配置文件 。
四) Discuz!的数据处理过程 。
a) DZ对mysql的数据库操作处理全部封装在dbstuff(db_mysql.class.php)类中 。
b) 所在的外部数据均通过“daddslashes()”初步过滤,然后再过滤,再根据需要处理 。
五) Discuz!的显示控制(网站多样式风格输出) 。
a) 显示层就是大家通常所看到的网站风格了。DZ中每套风络分别在templates及images下对应一个风格文件的存放目录。网站风格的制作,请参阅详细的DZ风格制作文档 。
b) DZ网站风格文件处理的原理:其实很简单,DZ使用template.func.php中的parse_template()以PHP正则运算把htm模文件中的模板标签,转换成了PHP代码,并根据styleid保存在forumdata/templates下,这个有点像Smarty中的技术.
六) DZ中的语言处理 。
a) DZ前台及后台中、英语言的实现,均是把语句定义成了语变量,然后在模板输入,语句变量的赋值,均放在模板目录中的*.lang.php文件中,DZ在生成网站风格时就加载了这相应的语言包.
七) DZ如何处理用户信息(存取、计算、更新过程) 。
新手要做二次开发,都必须掌握这数组中,每个数组元素的意义.
a) DZ的基本信息,如用户信息,Session信息存在如下变量中:
a). $_DCACHE 。
b). $_COOKIE 。
c). $_DCOOKIE 。
d). $_DSESSION 。
e). $_DPLUGIN 。
b) 可以通过print_r($GLOBALS),打印全部变量 。
八) DZ中缓存处理机制 。
a) DZ中缓存处理过程都放在“cache.func.php”中,DZ的缓存处理比较简单,其原理是把一个数组转换成了PHP代码,并保存在缓存目录下,大家可打开缓存文件查看便知.
b) 使用方法:如果在新开的功能中,需要缓存某部分数据,基本上就是:
1)定义并注册缓存名字.
2)从数据读取相应的数据.
3)数据在写入缓存前作相应处理.
4)最后写入缓存.
具体操作,可以看文件中的代码,做相应的修改即可 。
九) DZ中模板处理机制 。
a) DZ独创的模板处理技术,类似于Smarty中的模板处理,只是具体算法,过程不同,Smarty是一种重型模板引擎方案。其原理都是把模板中的变量转换成相应的PHP代码,这个过程实际是模访JAVA中的一次编译,多处运行.
十) DZ中权限处理机制 。
a) 对于DZ中前台的每相action都有$discuz_action定义,DZ根据用户所在的用户组来判定用户是否具有相应操作$discuz_action的权限。至于后台的权限权验证,则更简单了,依据“admin==1”来确定的 。
十一) DZ中如何实现URL静态化 。
a) DZ中的静态有两法,只要懂ReWrite规划的朋友,一看就知.
十二) DZ独创的HTML编辑器,如何截取并使用,如果进行Discuz!代和Html代码的转换 。
a) 这也算是DZ比较牛的一项技术了,在早期版中,因DZ编辑器的不足,使得很多用户放弃了DZ。实现原理:通过JS把用的一些操作转换成了DZ的bbcode代码。这样子提交了安全性,将带有bbcode代码的内容存入数据,在用户打开页页时,又把bbcode代码转换成html代码 。
本贴声明:由于时间有限,本贴只有关于DZ部分功能的简短分析。若各位网友,对本文感兴趣并想更为深入了解DZ,请在本贴后回贴!我将尽可能多的DZ技术分析写在本文,不断更新本贴内容.
部分文件说明
admincp.php 管理 。
ajax.php ajax功能 。
announcement.php 公告 。
attachment 附件 。
board.php 真正的首页 。
config.inc.php 这个是配置文件 。
corpus.php 论坛文集 。
digest.php 精华帖子 。
discuz_version.php 论坛版本号 。
faq.php 问题列表 。
forumdisplay.php 论坛列表 。
index.php 跳转页面 。
loggin.php 认证页面(登录退出) 。
mail_config.inc.php 邮件配置 。
member.php 用户操作 。
memcp.php 个人控制面版 。
misc.php 零碎功能 。
my.php 我的帖子 。
plugin.php 插件 。
pm.php 短信 。
post.php 发送帖子 。
redirect.php 页面重定向 。
register.php 注册 。
robots.txt 限制搜索 。
rss.php rss信息发布 。
search.php 论坛查询 。
secode.php 验证码 。
stats.php 统计 。
topic.php 首页论坛专题 。
topicadmin 主题管理 。
viewpro.php 显示个人信息 。
viewthread.php 主题显示 。
文件夹 。
admin 管理 。
api 接口 。
archiver 文档 。
attachments 附件 。
customavatars 自定义表情 。
forumdata 论坛数据包含缓冲数据 。
images 图片 。
include 公共文件 。
install 安装包 。
ipdata ip地址 。
plugins 插件 。
readme 帮助文档 。
templates 模板 。
utilities 工具包 。
wap 手机网站 。
文件夹include 。
advertisements.inc.php 广告管理 。
ajax.js ajax相关 。
attachment.func.php 附件函数集 。
bbscode.js 论坛表情 。
cache.fun.php 缓存函数集 。
category.inc.php 栏目 。
chinese.class.php 。
common.inc.php 最主要的头文件 。
common.js 最主要的js文件 。
corpus.func.php 论坛文集函数 。
counter.inc.php 论坛计数 。
cron.func.php 计划任务 。
db_mysql.class.php 数据库 。
db_mysql_error.inc.php 数据库错误 。
debug.php 调试信息 。
discuzcode.func.php 论坛代码 。
editor.func.php 编辑器 。
editor.js 编辑器 。
editpost.inc.php 编辑帖子 。
floatadv.js 浮动广告 。
forum.func.php 论坛函数集 。
global.func.php 全局函数 。
menu.js 菜单 。
misc.func.php 其它 。
newreply.inc.php 新回复 。
newthread.inc.php 新主题 。
*pmprompt.inc.php 。
post.fun.php 发表主题 。
printable.inc.php 论坛打印 。
qihoo.js qihoo 。
relatethreads.inc.php 相关主题 。
security.inc.php 安全 。
sendmail.inc.php 邮件 。
serverbusy.htm 系统繁忙 。
template.func.php 模板 。
threadpay.inc.php 购买帖子 。
最后此篇关于Discuz二次开发基本知识总结的文章就讲到这里了,如果你想了解更多关于Discuz二次开发基本知识总结的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
1、定义 设 \(u\) 和 \(v\) 为一张图上的任意两个节点。令 \(c(u, v)\) 为它们之间的边的容量, \(f(u, v)\) 为它们之间的流量,则需要满足以
1、前言 工作中涉及到文件系统,有时候需要判断文件和目录是否存在。我结合apue第四章文件和目录,总结一下如何正确判断文件和目录是否存在,方便以后查询。 2、stat系列函数 stat函数用来
并查集(Union-Find Set): 一种用于管理分组的数据结构。它具备两个操作:(1)查询元素a和元素b是否为同一组 (2) 将元素a和b合并为同一组。 注意:并查集不能将在同一组的元素拆
当下,注解非常流行,以前很长篇的代码,现在基本上一个注解就能搞定。 那,在Mybatis中又有哪些注解呢? Mybatis中的注解基本上都在org.apache.ibatis.annotat
指针操作数组,方法一是p+index,方法二是p[index],第二种方法跟数组访问方法是一样的。 数组引用返回的是数组的第一个元素的指针地址。 可以将指针指向数组的任意元素,然后从那里开始访问
通常部署完php环境后会进行一些安全设置,除了熟悉各种php漏洞外,还可以通过配置php.ini来加固PHP的运行环境,PHP官方也曾经多次修改php.ini的默认设置。 下面对php.ini中一
在JavaScript中,使用typeof可以检测基本数据类型,使用instanceof可以检测引用数据类型。在PHP中,也有检测数据类型的方法,具体如下: 1、输出变量的数据类型(gettype
把图片缓存到本地,在很多场景都会用到,如果只是存储文件信息,那建一个plist文件,或者数据库就能很方便的解决问题,但是如果存储图片到沙盒就没那么方便了。这里简单介绍两种保存图片到沙盒的方法。
(1)需要安装docker容器,在docker容器内安装jenkins,gogs,tomcat。 新建maven项目,添加findbugs plugin。 使用docker
今天主题是实现并发服务器,实现方法有多种版本,先从简单的单进程代码实现到多进程,多线程的实现,最终引入一些高级模块来实现并发TCP服务器。 说到TCP,想起吐槽大会有个段子提到三次握手,也只有程序
如下所示: Ctrl+1或F2快速修复 Ctrl+D快捷删除行 Shift+Enter 快速切换到下一行,在本行的任何位置都可 Ctrl+F11快速运行代码 Alt+上下键 快速移动行(可
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。 JSP编译后是”类servlet”。 Servlet和JSP最主要的不同点在于,Servlet的应用逻辑
Java中的Runable,Callable,Future,FutureTask,ExecutorService,Excetor,Excutors,ThreadPoolExcetor在这里对这些关键
读取Java文件到byte数组的三种方法(总结) ? 1
用java实现的数组创建二叉树以及递归先序遍历,递归中序遍历,递归后序遍历,非递归前序遍历,非递归中序遍历,非递归后序遍历,深度优先遍历,广度优先遍历8种遍历方式:
1、简明总结 ASCII(char) 返回字符的ASCII码值 BIT_LENGTH(str) 返回字符串的比特长度 CONCAT(s1,s2…,sn)
java应用服务器(web server),是指运行java程序的web应用服务器软件,不包括nginx、Apache等通用web服务器软件。 一、Tomcat Tomcat是Apache 软件基
事务作为抽象层,允许应用忽略DB 内部一些复杂并发问题和某些硬件、软件故障,简化应用层的处理逻辑:事务中止(transaction abort),而应用仅需重试。对复杂访问模式,事务可大大减少需要考虑
我们在本教程学习了如何描述 XML 文档的结构 我们学习到了如何使用 DTD 来定义一个 XML 文档的合法元素,以及如何在我们的 XML 内部或者作为一个外部引用来声明 DTD 我们学习了如何为
在这个XPath 基础教程中我们讲解了如何在 XML 文档中查找信息 我们可以使用 XPath 的元素和属性在 XML 文档中进行导航 我们也学习了如何使用 XPath 中内建的某些标准函数 如
我是一名优秀的程序员,十分优秀!