您现在的位置是:首页 > cms教程 > phpcms教程phpcms教程
phpcms模块开发步骤教程示例
翠彤2025-05-25phpcms教程已有人查阅
导读在phpcms中,各个功能是以模块为单位定义的(对应modules目录),如果需要新增功能较好的办法就是开发一个模块,然后复制到phpcms目录下,然后进入后台安装即可。
在phpcms中,各个功能是以模块为单位定义的(对应modules目录),如果需要新增功能较好的办法就是开发一个模块,然后复制到phpcms目录下,然后进入后台安装即可。
官方说明:
phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块。即url访问中的m
示例:
http://www.ebingou.cn/index.php?m=content
那么您访问的就是phpcms/modules/content 这个模块。如果创建一个,只要在 phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。
开发步骤:
1.建立目录结构:
我们要开发的东东(也就是模块)就在/phpcms/modules/下面如果没有什么特别的,在开发一个模块之前先要按照目录结构建立好相关目录并且设计好数据库表结构。下面拿开源部落开发的一个留言板模块guestbook讲解一下
下面是guestbook模块下的目录结构:
guestbook
--classes //这个是mytest模块会用到的类
--guestbook_tag.class.php//可能是用来生成前台模板引擎标签的,目前暂不讨论
--functions//guestbook模块用到的函数
--global.func.php//目前里面没有东西
--install//安装此模块需要的一些配置文件和建立数据表mysql语句什么的在这里
--language//多语言的时候会用到
--zh-cn//语言包文件夹
--guestbook.lang.php//多语言文件
--config.inc.php//这个配置文件是用来描述整个模块的一些信息
--extention.inc.php//这个是创建目录结构 .这个文件也用来控制权限
--model.php//模块使用了哪些数据模型.(可以理解为使用了哪些表.)
--module.sql//这个向数据库里面modules插入模块的记录
--guestbook.sql//这个文件在安装的时候会被执行,把建立数据库表的sql放进来
--templates //guestbook模块用到的后台模板文件
--uninstall //卸载模块时候用到的配置和文件
guestbook.php //这个是guestbook模块的后台控制器文件`
index.php//这个是前台的控制器
2.建立数据模型
建立完一个这样的结构后 我们还需要在/phpcms/model/下面建立我们的数据模型例如 guestbook_model.class.php (这个使用了很典型的工厂模式)具体每个文件里面写了些什么.我们一个一个来看 .首先来看我们在model文件夹下面建立guestbook_model.class.php文件.
代码如下:
第二行加载系统的model类,后面的参数0的意思是并不实例化,之后一行调用了父类的构造方法.可以在phpcms/libs/classes/model.class.php中找到
而这个model类里面定义了很多对数据的操作方法,最基本的增删改查。以后我再详细说说model基本的一些方法。
3.编写modules中的文件
接着来看看modules/install 里面的东东第一个language文件夹是用来支持多语言菜单的。
该留言板模块只有一个zh-cn文件夹,里面的guestbook.lang.php大体内容类似下面的:
然后是config.inc.php,这个里面写的是一些关于模块安装时候的信息。
文件里面是这个结构的:
再然后是extention.inc.php,这个文件是用来创建后台管理菜单的目录结构的,也是用来控制权限的代码如下:
代码如下:
代码如下:
官方说明:
phpcms v9框架中的模块,位于phpcms/modules目录中 每一个目录称之为一个模块。即url访问中的m
示例:
http://www.ebingou.cn/index.php?m=content
那么您访问的就是phpcms/modules/content 这个模块。如果创建一个,只要在 phpcms/modules 目录下创建文件夹并放入你的控制器类就可以了。
开发步骤:
1.建立目录结构:
我们要开发的东东(也就是模块)就在/phpcms/modules/下面如果没有什么特别的,在开发一个模块之前先要按照目录结构建立好相关目录并且设计好数据库表结构。下面拿开源部落开发的一个留言板模块guestbook讲解一下
下面是guestbook模块下的目录结构:
guestbook
--classes //这个是mytest模块会用到的类
--guestbook_tag.class.php//可能是用来生成前台模板引擎标签的,目前暂不讨论
--functions//guestbook模块用到的函数
--global.func.php//目前里面没有东西
--install//安装此模块需要的一些配置文件和建立数据表mysql语句什么的在这里
--language//多语言的时候会用到
--zh-cn//语言包文件夹
--guestbook.lang.php//多语言文件
--config.inc.php//这个配置文件是用来描述整个模块的一些信息
--extention.inc.php//这个是创建目录结构 .这个文件也用来控制权限
--model.php//模块使用了哪些数据模型.(可以理解为使用了哪些表.)
--module.sql//这个向数据库里面modules插入模块的记录
--guestbook.sql//这个文件在安装的时候会被执行,把建立数据库表的sql放进来
--templates //guestbook模块用到的后台模板文件
--uninstall //卸载模块时候用到的配置和文件
guestbook.php //这个是guestbook模块的后台控制器文件`
index.php//这个是前台的控制器
2.建立数据模型
建立完一个这样的结构后 我们还需要在/phpcms/model/下面建立我们的数据模型例如 guestbook_model.class.php (这个使用了很典型的工厂模式)具体每个文件里面写了些什么.我们一个一个来看 .首先来看我们在model文件夹下面建立guestbook_model.class.php文件.
代码如下:
<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);//加载model类
class guestbook_model extends model {
function __construct() {
$this->db_config = pc_base::load_config('database');//加载数据库配置文件
$this->db_setting = 'default';//默认的数据库配置.//多个库的话可以在这里选库
$this->table_name = 'guestbook';//表名称,不用加表前缀
parent::__construct();
}
}
?>
第一行的作用是确定是不是在phpcms的运行框架内.第二行加载系统的model类,后面的参数0的意思是并不实例化,之后一行调用了父类的构造方法.可以在phpcms/libs/classes/model.class.php中找到
而这个model类里面定义了很多对数据的操作方法,最基本的增删改查。以后我再详细说说model基本的一些方法。
3.编写modules中的文件
接着来看看modules/install 里面的东东第一个language文件夹是用来支持多语言菜单的。
该留言板模块只有一个zh-cn文件夹,里面的guestbook.lang.php大体内容类似下面的:
<?php
$LANG['guestbook'] = '留言板';
$LANG['guestbook_name'] = '用户名称';
$LANG['tel'] = '联系电话';
$LANG['email'] = '用户email';
$LANG['title'] = '留言标题';
$LANG['lytime'] = '留言时间';
$LANG['typeid'] = '所属分类';
$LANG['status'] = '状 态';
$LANG['type_id'] = '分类ID';
该lang文件应该会在安装的时候会复制到./phpcms/languages/zh-cn中一份然后是config.inc.php,这个里面写的是一些关于模块安装时候的信息。
文件里面是这个结构的:
<?php
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
$module = 'guestbook';
$modulename = '留言板';
$introduce = '留言板模块';
$author = 'Jason';
$authorsite = 'http://cnblogs.com/savokiss';
$authoremail = 'jaynaruto@qq.com';
?>
当然以前的信息是开源部落的,我稍微改了一下。再然后是extention.inc.php,这个文件是用来创建后台管理菜单的目录结构的,也是用来控制权限的代码如下:
<?php
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
$parentid = $menu_db->insert(array('name'=>'guestbook', 'parentid'=>29, 'm'=>'guestbook', 'c'=>'guestbook', 'a'=>'init', 'data'=>'', 'listorder'=>0, 'display'=>'1'), true);
$menu_db->insert(array('name'=>'add_guestbook', 'parentid'=>$parentid, 'm'=>'guestbook', 'c'=>'guestbook', 'a'=>'add', 'data'=>'', 'listorder'=>0, 'display'=>'0'));
$menu_db->insert(array('name'=>'edit_guestbook', 'parentid'=>$parentid, 'm'=>'guestbook', 'c'=>'guestbook', 'a'=>'edit', 'data'=>'', 'listorder'=>0, 'display'=>'0'));
$menu_db->insert(array('name'=>'delete_guestbook', 'parentid'=>$parentid, 'm'=>'guestbook', 'c'=>'guestbook', 'a'=>'delete', 'data'=>'', 'listorder'=>0, 'display'=>'0'));
$menu_db->insert(array('name'=>'guestbook_setting', 'parentid'=>$parentid, 'm'=>'guestbook', 'c'=>'guestbook', 'a'=>'setting', 'data'=>'', 'listorder'=>0, 'display'=>'1'));
$menu_db->insert(array('name'=>'add_type', 'parentid'=>$parentid, 'm'=>'guestbook', 'c'=>'guestbook', 'a'=>'add_type', 'data'=>'', 'listorder'=>0, 'display'=>'1'));
$menu_db->insert(array('name'=>'list_type', 'parentid'=>$parentid, 'm'=>'guestbook', 'c'=>'guestbook', 'a'=>'list_type', 'data'=>'', 'listorder'=>0, 'display'=>'1'));
$menu_db->insert(array('name'=>'check_register', 'parentid'=>$parentid, 'm'=>'guestbook', 'c'=>'guestbook', 'a'=>'check_register', 'data'=>'', 'listorder'=>0, 'display'=>'1'));
$language = array('guestbook'=>'留言板', 'edit_guestbook'=>'编辑留言板', 'delete_guestbook'=>'删除留言板', 'guestbook_setting'=>'模块配置', 'add_type'=>'添加类别', 'list_type'=>'分类管理', 'check_register'=>'审核申请');
?>
文件之后那个language数组,是用来插入系统的language\zh-cn\system_menu.lang.php里面的然后是model.php 这个就是你使用了哪些数据模型 可以理解为使用了哪些表代码如下:
<?php
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
return array('guestbook');
?>
然后是module.sql 这个是用来向系统的module表里面插入数据用的,相当于注册模块
INSERT INTO `phpcms_module` VALUES ('guestbook', '留言板', '', '0', '1.0', '', 'array (\n 1 => \n array (\n \'is_post\' => \'1\',\n \'enablecheckcode\' => \'0\',\n ),\n)', '0', '0', '2011-02-22', '2010-02-22');
然后是guestbook.sql 建立你数据库表的语句应该写在这个文件里面代码如下:
DROP TABLE IF EXISTS `phpcms_guestbook`;
CREATE TABLE `phpcms_guestbook` (
`guestid` smallint(5) unsigned NOT NULL AUTO_INCREMENT,
`siteid` smallint(5) unsigned DEFAULT '0',
`typeid` smallint(5) unsigned NOT NULL DEFAULT '0',
`name` varchar(50) NOT NULL DEFAULT '',
`tel` varchar(50) NOT NULL DEFAULT '',
`email` varchar(100) NOT NULL DEFAULT '',
`title` varchar(100) NOT NULL DEFAULT '',
`introduce` text NOT NULL,
`username` varchar(30) NOT NULL DEFAULT '',
`listorder` smallint(5) unsigned NOT NULL DEFAULT '0',
`elite` tinyint(1) unsigned NOT NULL DEFAULT '0',
`passed` tinyint(1) unsigned NOT NULL DEFAULT '0',
`addtime` int(10) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`guestid`),
KEY `typeid` (`typeid`,`passed`,`listorder`,`guestid`)
) TYPE=MyISAM;
接着就是你所使用的后台模板 应该放在templates里面 命名的规则应该是guestbook_***.tpl.php我的模板比较多就不贴代码了之后是控制器,index.php和guestbook.php,其中index.php是前台控制器,guestbook.php是后台控制器控制器里面是针对你每个url传递过来的action也就是a=?的动作.默认动作是init
本文标签:
很赞哦! ()
图文教程
phpcms模板标签使用说明示例
使用phpcms总是要查询各种标签,实在很烦,只好找个比较全的来备查。因为自己写一个orm来配合调用也没那么容易无缝的嵌入到引擎当中。
phpcms中判断用户是否登录的方法
phpcms中如何判断用户是否登录?首先通过使用“param”类中的“get_cookie()”方法,获取到“_userid”数据;然后赋值给新的变量;最后在模板中使用PHP语法或“if”标签,判断新变量即可。
phpcms怎么做SEO?关键字设置使用教程
phpcms做关键字的方法:首先需要登录phpcms网站后台;然后点击phpcms后台顶部的“设置”按钮,并点击“相关设置”下的“站点管理”;接着点击默认站点右侧的
phpcmsv9水印在哪里,怎么修改
phpcmsv9水印在【站点管理】中,打开方法:首先进入【设置】下的【站点管理】;然后在右侧站点管理中点击【修改】链接;
相关源码
-
(自适应响应式)AI智能电子科技产品pbootcms网站模板下载基于PbootCMS内核的响应式模板,为AI智能硬件、电子产品等科技企业打造,通过技术创新实现品牌数字化升级。查看源码 -
pbootcms模板(自适应)花店鲜花花卉园艺网站源码一款基于PbootCMS内核开发的花店鲜花配送与花卉园艺企业网站模板。该模板采用响应式设计,自动适配手机、平板等移动设备,确保用户在任何设备上都能获得优质浏览体验。查看源码 -
(自适应)帝国cms7.5模板自媒体文章新闻博客为帝国CMS7.5设计的响应式模板,采用H5技术构建现代化内容展示框架。通过智能断点检测技术实现手机、平板、PC三端适配查看源码 -
(自适应)建站广告公司工作室作品展示品牌策划设计pbootcms源码下载基于PbootCMS开发的创意服务展示系统,内置作品集展示、服务流程图等专业模块,预设客户案例、设计流程等创意行业专属栏目结构。查看源码 -
(自适应)帝国cms7.5模板新闻资讯门户带会员中心基于帝国CMS7.5内核开发的HTML5响应式模板,为新闻机构、媒体门户及资讯聚合平台设计。通过模块化布局实现图文混排查看源码 -
自适应建材瓷砖卫浴大理石类pbootcms网站模板源码下载为建材瓷砖、卫浴瓷砖企业打造的高端响应式门户模板,基于PbootCMS内核深度开发。采用前沿HTML5自适应架构,无缝兼容手机端触控交互与PC端展示场景。查看源码
| 分享笔记 (共有 篇笔记) |
