phpcms 新建模块安装
1.安装配置---小问题:

估计就我这么傻 T-T ,改成自己的目录名。
2.模块的目录:
模块存放在modules文件夹里,打开这个文件夹,里面的一个文件夹代表一个模块。


3.建立模块以及其基本目录结构。
现在新建个test模块,要在phpcms/modules目录下新建个myself目录(这个test目录就是模块)
再依次新建classes、functions、install、templdates、uninstall目录

4.创建了模块的基本目录以后,需要为新建模块做安装准备
4.1 新建myself模块的配置文件
在install目录下新建一个config.inc.php文件,
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
$module = 'myself'; //模块的标识符,唯一性,不可重名,应该和目录同名
$modulename = '挂件';
$introduce = '测试模块,用来测试的';
$author = '挂件';
$authorsite = 'http://www.guajian.com';
$authoremail = 'guajian@sina.com';
配置好了以后保存,然后回到后台,更新缓存,点击模块管理,可以看到:

不用点击安装。
4.2 将模块添加到左侧菜单栏
在新建的myself模块目录下的install目录里,新建个extention.inc.php文件,,填写以下代码,注意,parentid中的29是上面一级菜单 模块 这个菜单的Id号,如果要在主菜单显示,可以parentid的值改为0,如果要在指定菜单中显示,可以把parentid改成对应菜单id 的值即可,菜单的id可以在扩展中的菜单管理中查看。

<?php
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
$parentid=$menu_db->insert(array('name'=>'myself',
'parentid'=>29,
'm'=>'myself',
'c'=>'myself',
'a'=>'init',
'data'=>'',
'listorder'=>0,
'display'=>'1'
),true);
// 这里可以生成管理菜单,也就是生成当前菜单的子菜单
$language=array('myself'=>'挂件');
?>
4.3新建模块后台类文件(类文件就是控制器) 和 模板文件(就是视图)-MVC
phpcms的url是这样的index.php?m=admin&c=index&a=public_main,
m的值表示是模块名,c表示是类名,a表示的是类的方法名,在上一步中,我们已经 向菜单表中插入一条模块名为test,类名为test,方法名为init的条菜单记录。所以就 必需在myself模块(即myself根目录)中新建一个myself类文件,并添加init方法,代码如下。


<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_app_class('admin','admin',0);
class myself extends admin {
function __construct() {
parent::__construct();
}
public function init() {
include $this->admin_tpl('myself');
}
}
?>
上述init方法调用了myself模版,所以必需要在myself/templdates目录下新建对应模块,现在新建个myself.tpl.php文件, 命名规则是 .tpl.php

<?php
defined('IN_ADMIN') or exit('No permission resources.');
include $this->admin_tpl('header','admin');
?>
<div class="pad_10">
我可是你的挂件啊
</div>
</body>
</html>
4.4最后一步,安装模块:
安装模块就要往数据库表单里添加信息,所以先写一个插入模块信息的sql文件
在install文件夹里新建个modules.sql文件,代码如下
INSERT INTO `v9_module` (`module`, `name`, `url`, `iscore`, `version`, `description`, `setting`, `listorder`, `disabled`, `installdate`, `updatedate`) VALUES ('myself', '挂件', 'myself/', '0', '1.0', '', '挂件', '0', '0', '2017-05-03', '2017-05-03');

iscore如果为1,表示是系统内置模块,是必选模块,对于二次开发来说,写为0即可。disabled如果为1表示禁止卸载,如果为0表示可卸载,根据需求,当前要实现的是可安装和卸载。setting是模块的配置变量,用来设置模块的一些基本信息,值为一个字符串数组。例如,表单向导中的模块配置功能。
4.5创建数据表模型类
各模块的数据表模型位于:phpcms/model/ 目录下。
数据模型文件的命名规则建议为:数据表名称 + '_model.class.php'
打开install目录,新建model.php文件.
写上以下代码
defined('IN_PHPCMS') or exit('Access Denied');
defined('INSTALL') or exit('Access Denied');
return array('myself');

作用是用来定义模块的表名,在安装时模块时,系统会根据这个数组的值调用同目录下的同名sql文件。
而在phpcms中,一个表对应一个模型类文件。因为,上面在model文件中的返回数组中添加了一个值 array(myself),对应的,就要新建一个同名的sql文件和一个model文件。
先在install目录下新建一个myself.sql文件

DROP TABLE IF EXISTS `v9_test`;
CREATE TABLE `v9_test (
`id` mediumint(8) unsigned DEFAULT '0',
`name` char(20) NOT NULL,
PRIMARY KEY (`id`),
KEY `id` (`id`)
) TYPE=MyISAM COMMENT '挂件表';
作用:在数据库生成了一张当前模块需要使用的名为myself的表
然后在phpcms/model目录新建个myself_model.class.php文件

<?php
defined('IN_PHPCMS') or exit('No permission resources.');
pc_base::load_sys_class('model', '', 0);
class myself_model extends model
{
public function __construct()
{
$this->db_config = pc_base::load_config('database');
$this->db_setting = 'default';
$this->table_name = 'myself';
parent::__construct();
}
}
?>
5.安装
做好了上述准备,进入后台,更新缓存,点击模块管理,找到添加的模块点击安装

确定以后,安装成功后会自动更新栏目缓存。 等待更新完成后,退出登录,重新登录后台。

点击 挂件栏目

就可以看到刚才我们设置的模版的内容,
myself/templdates目录下myself.tpl.php文件。
6.卸载自己添加的模块
在uninstall 目录里 新建 extention.inc.php 以及 model.php

Extention 里代码如下

Model 里

因为用到了表 myself, 在install里有myself.sql 创建了表,在unstall里也应该有mysql.Sql用于删除表.

配置好以后就可以进行模块的卸载了,卸载掉以后,逃退出重新登录才能看到左侧菜单栏的效果。
注意:
install 里面还有两个文件夹,模块的语言文件名和模块的名称一样,在模块的install目录下的languages目录对应的语言新建一个mysql.lang.php文件,在安装时,系统会自动把文件拷贝到phpcms/languages下对应的语言目录下。
templates 用于存放前台模版,在安装前把前台所需要的模板,全部放在这个目录。模块安装时,系统会自动在网站根目录下的templdates目录中,新建一个和模块名一样的目录,把install/templates目录下的模板文件拷贝一份进来。
前台的逻辑处理文件直接在模块根目录下新建即可。

7.接下来就是模版的开发了。
有些时候可能会用到bootstrap,那么bootstrap应该放到哪里呢? 放到static文件夹里吗?
这个时候要看情况了, 有两种方法
1.直接放在和static同级的目录下,因为phpcms前台都是通过入口文件index.php 访问的,static和index.php同级,放在一起就可以直接引用

bs 是文件夹名字。
2.既然有JS_PATH,CSS_PATH ,那就造一个BS_PATH
在phpcms目录下有base.php,里面定义了JS_PATH,复制一份修改,

因为加载了配置文件system,找到caches/configs/system.php 大概30行,复制修改,这样bs路径就设置好了。

然后把文件放到指定位置(static目录里,我命名是bs),再到模版里引入就可以了。

这是在前台模版里引入的样式。

参考视频: 网易云课堂里有phpcms二次开发教程,主要是安装和模版开发,但是也是用的pc标签,但是实际开发中很少用pc,比如我就是用php,。
开发新模块算是一个大的项目需求,正常的项目需求就是对已有的模块进行功能的增删改。
phpcms 新建模块安装的更多相关文章
- 用phpcms开发模块时中文乱码问题
学着用phpcms开发一个文件管理模块,出现中文乱码,折腾了半天,总结如下 1.自己在mysql客户端建表,默认表格的编码为latin1_swedish_ci,虽然可以建好后用alter命令修改编码, ...
- perl模块安装
转自: http://www.cnblogs.com/itech/archive/2009/08/10/1542832.html http://www.mike.org.cn/blog/index.p ...
- python机器学习模块安装
环境:RHEL6.5 离线安装 ############################################################################ 一,本地yum ...
- 全球第一开源云ERP Odoo操作手册 模块安装和界面汉化指南
之前介绍了odoo的安装和初始设置以及数据库,下面来介绍odoo的模块安装和界面汉化. 1.4 模块安装和界面汉化 Odoo 的功能包含在不同的模块中, 刚创建的数据库除 Odoo 的核心模块外, 其 ...
- PHPCMS V9 模块开发 二次开发实例 留言本
鄙人实现了PHPCMS V9 产品开发权威指南(2011官方最新版).doc中的留言板实例,并加上模块安装和卸载功能, 程序可以运行,但只实现基本功能,目的是想让和我一样徘徊在PHPCMS门口不知道从 ...
- windows下使用cpanm进行模块安装
windows下使用cpanm进行模块安装 要放假了,突然想整理一下手头上的软件,突然发现perl的安装模块这个功能不能用. 弄了一下,使得windows 下 perl 的 cpanm能用,避免成天为 ...
- 循序渐进nginx(三):日志管理、http限流、https配置,http_rewrite模块,第三方模块安装,结语
目录 日志管理 access_log error_log 日志文件切割 自定义错误页 http访问限流 限制请求数 语法 使用 限制连接数 语法 测试 补充: https配置 使用 生成证书 配置ng ...
- python安装、模块安装
python安装 windows 下载安装包 https://www.python.org/downloads 改环境变量 [右键计算机]-->[属性]-->[高级系统设置]-->[ ...
- python3 中mlpy模块安装 出现 failed with error code 1的决绝办法(其他模块也可用本方法)
在python3 中安装其它模块时经常出现 failed with error code 1等状况,使的安装无法进行.而解决这个问题又非常麻烦. 接下来以mlpy为例,介绍一种解决此类安装问题的办法. ...
随机推荐
- Golang 在 Mac、Linux、Windows 下如何交叉编译(转)
原文地址:Golang 在 Mac.Linux.Windows 下如何交叉编译 Golang 支持交叉编译,在一个平台上生成另一个平台的可执行程序,最近使用了一下,非常好用,这里备忘一下. Mac 下 ...
- Nodejs--url模块
由于GET请求直接被嵌入在路径中,URL是完整的请求路径,包括了?后面的部分,因此你可以手动解析后面的内容作为GET请求的参数. url 模块中的 parse 函数可以用于解析url中的参数. url ...
- C++三大特性 封装 继承 多态
C++ 三大特性 封装,继承,多态 封装 定义:封装就是将抽象得到的数据和行为相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成类,其中数据和函数都是类的成员,目的在于将对 ...
- 推送证书p12文件转换成pem的命令
openssl pkcs12 -in 你的p12文件名称.p12 -out 需要生成的pem文件名称.pem -nodes
- [LeetCode] 100. Same Tree ☆(两个二叉树是否相同)
描述 解析 根与根比较,左右子树互相递归比较即可. 代码 /** * Definition for a binary tree node. * public class TreeNode { * in ...
- WebGoat 8安装、配置、使用教程(CentOS)
一.说明 1.1 背景说明 之前只用过dvwa,听说WebGoat也是类似的平台后,想装来试试有没有什么异同. 看了下载文件,和网上官方的.非官方的安装教程,感觉很多都对不上: 最后发现WebGoat ...
- was重要文件位置备忘
软件版本信息--/was/profiles/lsDmgr/properties/version/profile.version(/was/bin/versionInfo.sh) profile模版位置 ...
- killl prefix out macro mis mal micro -m
1● macro 宏大,规模大 2● mis 错误,坏 3● mal 坏,错误 4● micro 小,微小
- asp.net mvc如何获取url的相关信息
1.获取完整url信息(协议名+域名+虚拟目录名+文件名+参数) string url = Request.Url.ToString(); 如: //1)获取完整url(协议名+域名+虚拟目录名+文件 ...
- 回声UDP服务器端/客户端
UDP是具有数据边界的协议,传输中调用I/O函数的次数非常重要.输入函数的调用次数要和输出函数的调用次数完全一致,这样才能保证接受全部已发送的数据. TCP套接字中需注册待传输数据的目标IP和端口,而 ...