phpcms插件

woshikay 2021-10-17 原文


phpcms插件


最近在研究PHP,学了一段时间后感觉想自己写点东西,但是又不知道写什么,最后把目标对准了PHPCMS的插件,从网上找了一下,大部分教程都只是教怎么写插件的具体代码,而没有教怎么把插件打成安装包,特别是官方,只字未提!这里鄙视一下~好了下面把我知道的一些东西写下来,希望能帮到新手~

下面我们先来看一下插件包的具体结构


mytest

  –class //这个是mytest模块会用到的类

  –function//mytest模块用到的函数

  –install//安装此模块需要的一些配置文件和建立数据表myslq语句什么的在这里

    –language//多语言的时候会用到

    –config.ini.php//这个配置文件是用来描述整个模块的一些信息

    –extention.inc.php//这个是创建目录结构 .这个文件也用来控制权限

    –model.php//模块使用了哪些数据模型.(可以理解为使用了哪些表.)

    –model.sql//这个向数据库里面插入模型的记录

    –my_test.sql//这个文件在安装的时候会被执行,把建立数据库表的sql放进来

  –templates //,mytest模块用到的模板文件

  –uninstall //卸载模块时候用到的配置和文件

    这个里面的文件我没研究 回头研究了补上.

my_test.php //这个是mytest模块的后台控制器文件`

index.php//这个是前台的控制器,这个我没写东西.


 好了,插件包基本上就是这个样子了~那么接下来分步解释:

建立完一个这样的结构后 我们还需要在/phpcms/model/下面建立我们的数据模型

例如 my_test_model.class.php (这个使用了很典型的工厂模式)

具体每个文件里面写了些什么.我们一个一个来看 .首先来看我们在model文件夹下面写的那个文件.

 代码如下:

<?php
defined(\’IN_PHPCMS\’) or exit(\’No permission resources.\’);
pc_base::load_sys_class(\’model\’, \’\’, 0);
class my_test_model extends model {
public function __construct() {
$this->db_config = pc_base::load_config(\’database\’);
$this->db_setting = \’default\’;//默认的数据库配置.//多个库的话可以在这里选库
$this->table_name = \’my_test\’;//这个就是表名称,不用加表前缀
parent::__construct();
}
}
?>

第一行的作用是确定是不是在phpcms的运行框架内.

 

第二行加载系统的model类,后面的参数0 的意思是并不实例化.

最后一行调用了父类的构造方法.可以在phpcms/libs/classes/model.class.php中找到

而这个model类里面定义了很多对数据的操作方法 最基本的增删改查。以后我再详细说说model基本的一些方法。

接着来看看modules 里面的东东

我们一个个往下面看 第一个language 是用来支持多语言菜单的。

然后是config.ini.php,这个里面写的是一些关于模块安装时候的信息。

文件里面是这个结构的

代码如下:

$module = \’mytest\’;//使用的model
$modulename = \’这里是模块的名称\’;
$introduce = \’模块的描述信息\’;
$author = \’作者\’;
$authorsite = \’作者网站\’;
$authoremail = \’作者email\’;

里面标注的很清楚了

 

接着是extention.inc.php 这个文件是用来创建后台管理菜单的目录结构的,也是用来控制权限的

代码如下:

$id= $menu_db->insert(array(\’name\’=>\’这里写着操作名称\’, \’parentid\’=>父ID, \’m\’=>\’模块\’, \’c\’=>\’控制器\’, \’a\’=>\’动作\’, \’data\’=>\’\’, \’listorder\’=>排序, \’display\’=>\’是否显示\’),true);//最后的true是用来返回ID的

文件最后应该有一个数组,这个数组是用来插入系统的languagezh-cnsystem_menu.lang.php里面的 格式如下

$language = array(
\’这里是你起的操作名称\’=>\’这里是操作的中文翻译\’,
类似:\’mytest_init\’=>\’显示列表\’
);

 

这里我分别解释一下:

$id:这个是你这个插件的菜单ID号,主要是用与下级菜单(如果有的话)挂载用的,就是从属于它下面的菜单会通过这个id变量挂到它的下面;

$menu_db->insert():这个是PHPCMS提供的一个方法,具体在集成的系统modul里可以自己去查,这句就是向数据库插入数据用的,里面的参数分别为:数组(要插入的内容),布尔变量(是否返回ID号),布尔变量(是否采用 replace into的方式添加数据);

数组的变量也分别解释一下:

name:这里写着操作名称

parentid:这个变量是父级的ID,就是说你想要让这个菜单显示在什么位置,

m:模块,就是你想调用的模块下面的控制器c和动作a都一样不一一解释了,

data:这个应该是附加数据,具体怎么用暂时不知道,

listorder:排序,主要是用在菜单比较多的时候用来决定排放位置先后顺序的,

display:就是说是不是让这个菜单显示出来,用1和0表示,1代表显示,0代表不显示千万别用例子中的方法啊!

最后只得一说的是parentid这个变量,它不是决定菜单放到什么位置吗?那该如何确定呢?看图:

1位置的”parentid”=>0

2位置的”parentid”=>29

这样就可以把菜单放到需要的位置了~

 

然后是model.php 这个就是你使用了哪些数据模型 可以理解为使用了哪些表

代码如下:
return array(\’mytest\’,\’my_test_artcle\’);
 
然后是model.sql 这个是用来向系统的模型表里面插入数据用的
代码如下:

INSERT INTO `phpcms_module` (`module`, `name`, `url`, `iscore`, `version`, `description`, `setting`, `listorder`, `disabled`, `installdate`, `updatedate`) VALUES ();

然后是mytest.sql 建立你数据库表的语句应该写在这个文件里面

 

接着就是你所使用的模板 应该放在templates里面 命名的规则应该是 mytest_add.tpl.php

最后是你的控制器 这个有的研究了.控制器里面是针对你每个url传递过来的action也就是a=?的动作.默认动作是init

 代码如下:

<?php
defined(\’IN_PHPCMS\’) or exit(\’No permission resources.\’);
pc_base::load_app_class(\’admin\’,\’admin\’,0);
class mytest extends admin(){
public function __construct(){
parent::__construct;//调用父类的构造函数
}
public function init(){
echo “这里是默认的操作方法”;
}
public function add(){
include $this->admin_tpl(\’mytest_add\’);//使用模板的方法
}
}
发表于
2015-04-01 11:45 
woshikay 
阅读(1795
评论(0
编辑 
收藏 
举报

 

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

phpcms插件的更多相关文章

随机推荐

  1. 企业架构研究总结(40)——TOGAF架构能力框架之架构合同、成熟度模型和架构技能框架

    5. 架构合同       架构合同是在开发团体和赞助者之间关于架构的交付物、质量以及适用目标的联合协议,并且 […]...

  2. 统计学习方法c++实现之一 感知机

    感知机 前言 最近学习了c++,俗话说‘光说不练假把式’,所以决定用c++将《统计学习方法》里面的经典模型全部 […]...

  3. Java经典小游戏——贪吃蛇简单实现(附源码)

    一、使用知识 Jframe GUI 双向链表 线程 二、使用工具 IntelliJ IDEA jdk 1.8 […]...

  4. 【Python】语法基础 | 开始使用Python

    Python的热度不言而喻,机器学习、数据分析的首选语言都是Python,想要学习Python的小伙伴也很多, […]...

  5. php(ThinkPHP)实现微信小程序的登录过程

    源码也在github中给出https://github.com/wulongtao/think-wxminih […]...

  6. docker环境下使用gitlab,gitlab-runner 为 NetCore 持续集成

      环境 Centos7.6 安装应用docker,docker-compose (我的Centos是用Hyp […]...

  7. JSONP跨域和CORS跨域理解

    什么是跨域? 跨域:指的是浏览器不能执行其它网站的脚本,它是由浏览器的同源策略造成的,是浏览器的安全限制! 同 […]...

  8. 工作一年

    原文链接:https://www.changxuan.top/?p=836 从去年三月四号到现在已经一年零一月 […]...

展开目录

目录导航