phpcms 新建模块安装

benpaodelulu 2021-10-17 原文


phpcms 新建模块安装


1.安装配置小问题:

 

 

估计就我这么傻 T-T  ,改成自己的目录名。

 

2.模块的目录:

 

模块存放在modules文件夹里,打开这个文件夹,里面的一个文件夹代表一个模块。

 

 

3.建立模块以及其基本目录结构。

现在新建个test模块,要在phpcms/modules目录下新建个myself目录(这个test目录就是模块)

再依次新建classesfunctionsinstalltempldatesuninstall目录

 

 

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

phpcmsurl是这样的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文件中的返回数组中添加了一个值 arraymyself),对应的,就要新建一个同名的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 访问的,staticindex.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,

开发新模块算是一个大的项目需求,正常的项目需求就是对已有的模块进行功能的增删改。

 

发表于
2017-05-18 16:48 
挂件 
阅读(2700
评论(0
编辑 
收藏 
举报

 

版权声明:本文为benpaodelulu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/benpaodelulu/p/6874201.html

phpcms 新建模块安装的更多相关文章

  1. PHPCMS V9教程之快速入门

    这篇文章要为大家来介绍PHPCMS V9这个系统的一些基本知识,PHPCMS是基于面向对象的,严格的安装MVC […]...

  2. phpcms v9模板制作教程(转载)

    phpcms v9模板制作教程 第一节 1、首先下载phpcms v9的集成安装包并安装,这里就不详细说明了。 […]...

  3. phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399)

    phpcms v9.6.0任意文件上传漏洞(CVE-2018-14399) 一、漏洞描述 PHPCMS 9.6 […]...

  4. PHPCMS v9安装使用

    PHPCMS是一个PHP语言编写的CMS(内容管理系统),用过其他系统的同学会很快上手这个系统,和这个系统差不 […]...

  5. phpcms V9 整合 Discuz! X2 教程

    整合原理: UCenter 作服务端;phpsso 与 Discuz! 分别作 UCenter 的客户端应用; […]...

  6. phpCMS V9 史上最详细环境搭建(windows)

    前言 注意:如果你没有 PHP 基础,那么推荐你看一遍文档再来配置 phpCMS 环境。 首先,需要搭建 PH […]...

  7. phpcms v9 配置sphinx全文索引教程

    英文介绍:http://www.sphinxsearch.com/docs/manual-0.9.9.html […]...

  8. phpcms 源码解析——-模板引擎 – 圣者

    phpcms 源码解析——-模板引擎 简介:这是phpcms 源码解析—& […]...

随机推荐

  1. 让我们一起摇摆 Turnipbit体感遥控车

    相信大家对Microbit是非常熟悉的,而今天我们做的这个小玩具所用的核心板是Turnipbit,是基于 Mi […]...

  2. 在线热备份数据库之innobackupex 增量备份InnoDB

    在线热备份数据库之innobackupex 增量备份InnoDB 什么是增量备份?其原理是什么? 增量备份是基 […]...

  3. 2021年回顾与展望

    2021年正式开始了,休息了两天,开始回归正规,回顾自己的2020做好总结,展望自己的2021,做好规划。 2 […]...

  4. java数据结构之hashMap

    初学JAVA的时候,就记得有句话两个对象的hashCode相同,不一定equal,但是两个对象equal,ha […]...

  5. 简单模拟实现javascript中的call、apply、bind方法

    目录 引子 隐式丢失 硬绑定 实现及原理分析 总体实现(纯净版/没有注释) 写在最后 引子 读完《你不知道的J […]...

  6. Win异常: 除了chrome浏览器外,所有安装的软件都连不上网

    经查找资料,是LSP被篡改,恢复后使用正常。   百度百科  LSP: Layered Service Pro […]...

  7. CentOS 7 Tomcat 启动后 外部无法访问的问题

    1.启动tomcat        2.   验证tomcat 是否启动成功        ps -ef|gr […]...

  8. 使用Visual Studio Code进行ABAP开发

      长期以来,我们都使用SAP GUI进行ABAP编码工作,事务代码SE38甚至成了ABAP的代名词。 SAP […]...

展开目录

目录导航