phpcms2008结构分析及二次开发散记

来源:互联网 发布:淘宝一件代发客人下单 编辑:程序博客网 时间:2024/06/01 09:32

phpcms2008结构

整个phpcms系统分为两种东西构成:模块(module)和模型(model)。以phpcms模块和member模块为核心架构。特别phpcms模块为基础。

所有模块的结构为:
module/
module/admin/
module/include/
module/api/
module/install/
module/uninstall/
注:phpcms作为基础模块有一些特殊性,后面会详细介绍。

module/admin/为后台管理目录。
module/admin/admin.inc.php为模块后台入口文件。注意phpcms模块的这个文件是管理员管理,不是入口文件。如果mod不是phpcms,就/admin.php载入这个文件,这个文件的主要作用就是载入module的后台所需要的一些特殊的函数,类,变量等!
module/admin/*.inc.php为后台管理文件,*代表的是file。
module/admin/include/模块后台管理包含文件。
module/admin/templates/为模块后台管理模板文件。

module/admin/setting.inc.php模块设置脚本
module/admin/priv.inc.php模块权限配置脚本
注意,在管理模块的时候会检测这两个文件,如果存在,那么模块的设置和权限管理就有连接(可以管理),如果这两个文件不存在,“设置”和“权限”就没有连接。


module/include为包含文件目录,包括一些函数和类库。
module/include/priv.inc.php为模块权限配置文件。如果模块需要权限管理功能,则通过修改此文件进行。
此文件由一个二维数据结构组成,结构如下。
<?php
return array(功能1=>array(功能1详细),
             功能2=>array(功能2详细),   
            );
?>
键值每个操作,二维数组为功能的详细,示例:
<?php
return array('all'=>array('name'=>'模块管理', 'file'=>'', 'action'=>''),
             'add'=>array('name'=>'会员添加', 'file'=>'member', 'action'=>'add')
             'add2'=>array('name'=>'会员添加2', 'file'=>'member', 'action'=>'add2')
            );
?>
二维数据中name为操作的中文名称,file为执行文件,action为操作的动作。file和action空串('')表示全权限,不为空的话则表示有对应权限,多项用逗号隔开。
module/include/common.inc.php为模块初始化文件
module/include/global.func.php为模块函数库文件

module/api接口目录。

module/install为模块安装目录。
module/install/config.inc.php为模块说明文件,包括如下变量
                $module   模块名称,此名字不能和其它目录名称相同
                $modulename   模块中文名称
                $introduce   模块简介
                $author 作者
                $authorsite 作者站点
                $authoremail 作者邮件
module/install/mysql.sql为模块数据表文件,添加新的模块的表的操作,此文件可选,需要把添加的模块插入一条模块记录到phpcms_module表中。然后添加创建所需要的表的sql语句。
module/install/extention.inc.php模块菜单扩展文件,此文件可选,用于把模块相应的功能菜单添加到menu表中。菜单中的子父菜单的关系可以参看:系统设置——>相关设置——>菜单管理——>管理菜单。

module/uninstall为模块卸载目录。
module/uninstall/extention.inc.php为删除菜单sql语句。
module/uninstall/mysql.sql为删除模块数据表,以及在phpcms_module表中模块记录
module/uninstall/delete.txt为删除文件列表,包括语言文件,模板文件,以及模块目录下的所有文件。具体可以看“/admin/module.inc.php”中删除模块的方法。

module/*.php为模块脚本文件,根据具体情况具体发挥。

以上为普通模块的基本结构和嵌入phpcms的方法及规则,那么phpcms作为一个特殊(基础)模块有些特殊的地方。
1、目录结构特殊性。
   主目录为根目录即“/”。
   目录结构中也同样是包含admin/,api/,include/。install/是负责整个系统的安装。因为phpcms作为基础模块不能被卸载,这个和member模块一样,没有uninstall目录。
   phpcms作为基础模块include/目录里提供了丰富的函数库,类库包括缓存操作,数据库操作,目录文件操作,会话操作等等。当然这里也包含priv.inc.php权限列表文件,config.inc.php为全站配置文件,这个跟模块安装目录里的config.inc.php大相径庭,完全不是一码事。
   这里面还有一个很重要的文件夹/include/admin/里面全是系统后台管理处理类。一个file对应一个处理类。
2、功能上特殊性。
   提供一些基础功能,比如缓存,数据库操作,ftp,http处理等等。
   
   模型管理功能。可以随意添加,管理内容模型。管理每个模型对应的字段设置。字段类型对应的操作都在/include/fields/目录下。



-------------------

后台用户组叫“角色”(role),对应表phpcms_role
前台用户组称之为组(group),对应表phpcms_member_group

phpcms_search为搜索镜像表,content字段内容都镜像到这个表,做全文索引。

member_cache为memory表,用来缓存用户表member,全部镜像过来,不过是不是在线用户。这种处理会员表的方式是不是有点土鳖了?我不知道为什么要这样处理

------------------

$mod来源于get方式传递admin.php?mod=phpcms这样,表示模块!

/admin.php?后面的query_string构成及含义:
例子:admin.php?mod=phpcms&file=content&action=add&catid=1
mod : 模块
file : inc文件(content.inc.php)
action : 动作(file中控制流程的参数,add,edit,list等等)
catid,id等等都是action处理需要的参数。

--------------------------
type:叫做内容的分类。提供了一个按照分类(或者叫类型?)浏览的方式。/type.php类型首页。算是对内容多一种浏览方式吧。

--------------------------

单网页生成方式很不爽
/名称/index.html的方式,很不爽。应该是单网页分类名为目录,英文名称为文件名

分类/名称.html
如:
about/hr.html

--------------------------

output.func.php是用来做伪静态的
--------------------

后台手工添加模块的话,最好模块英文名称用模块目录名。因为路径默认就是:模块名/。而后台添加模块的时候没有添加路径的选项。写自动安装的话可以配置路径。无伤大雅,但是需要注意!不一样的话会找不到对应文件的

--------------------

模型类型有:
0  基本类型(内容型,可以自己建立。)
2  会员型(包括企业会员,普通会员)
9  企业黄页专用(包括公司新闻:news,产品:product,商机:buy,企业招聘:job)
他们又有自己的模型字段,保存在phpcms_model_field表里。

如果直接在后台添加模型的话,先增加phpcms_model表关于这个模型的记录。然后创建模型内容表,这个表会按照include/admin/model.sql里的语句建立,并且按照这里的语句增加20条基本字段记录到phpcms_model_field,这20条基本字段和phpcms_content表对应。内容表比如phpcms_c_aticles,这个表里默认建立有三个字段contentid,content,template。

增加字段,先会在phpcms_model_field里增加记录,然后在用/include/fields/对应字段类型文件夹下的field_add.inc.php里的sql语句向内容表(如:phpcms_c_aticles)里增加字段。

我们在后台只能添加模型类型为0的模型(也就是基本的内容型模型),当然也只能编辑和删除这样的模型。

模型的使用:用栏目来绑定模型,然后再管理内容比如添加内容,这是会根据该栏目绑定的模型,调用模型字段对应的表单显示给用户,用来增加内容,增加的内容里,基本的20个字段的内容会存储在phpcms_content表里,content,template以及新增加的字段的内容会存储在“phpcms_c_模型表名”表里。

这个就是建立模型,增加模型字段,以及模型的使用。模型的功能大大增强了phpcms这个基本模块,这是phpcms2008优于2007的一个重要方面。在phpcms2007中只能用复制模块的方式来达到“模型”的复用的目的。

-----------------------------

phpcms模块下的分类会添加到phpcms_menu表,以供添加内容的左菜单菜单调用。