开发教程
使用手册
广告管理
模板设置
数据库管理
插件管理
分销管理
积分管理
小程序直播
第三方账号注册流程
网站模块
商品模块
订单管理模块
供应商模块
数据模块
微商城模块
小程序&APP模块
常见问题
支付对接
API接口
购物车相关接口
开发手册
支付退款接口
视频教程
FB视频教程
首页 > B2C商城 > 开发手册 > 开发教程 > 正文
tpshop的功能插件

插件千变万化, 一般插件安装卸载都会写份文档, 教开发者复制哪些文件到哪些目录, 然后执行哪些sql 新建哪些表。
卸载插件的时候 也很麻烦需要一个个文件去寻找删除。
但是tpshop 中的万能插件安装卸载 却很方便, 从此不需要像普通那么麻烦, 能做到一键安装 一键卸载, 前提条件是某些文件必须没有经过二次开发, 否则怕覆盖掉被开发的文件,
所以在安装卸载插件的时候, 请注意将会覆盖哪些文件。 话不多说, 先看下tpshop 插件管理类的 如下安装代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | //如果是功能插件if($condition[type] == function){ include_once "plugins/function/{$condition[code]}/plugins.class.php"; $plugin = new plugins(); if($update[status] == 1) // 安装 { $execute_sql = $plugin->install_sql(); // 执行安装sql 语句 $plugin->install(); // 执行 插件安装代码 } else // 卸载 { $execute_sql = $plugin->uninstall_sql(); // 执行卸载sql 语句 $plugin->uninstall(); // 执行插件卸载代码 } $Model = new ThinkModel(); $Model->execute($execute_sql); // 执行插件所需的sql 语句} |

然后看看插件目录。 其中 www 是所需要用到覆盖的文件,
config.php 插件配置
install.sql 插件安装时用到的sql
logo.jpg 插件图标
plugins.class.php 插件安装卸载累 格式固定的, 每个功能插件都必须有这个类, 名字格式都必须一致
uninstall.sql 卸载所用到的文件
下面不多说自己看代码体验一下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | use ThinkModelRelationModel;/** * 插件需要执行的方法 逻辑定义 */class plugins extends RelationModel{ public $tableName = plugin; // 插件表 public $app_path; /** * 析构流函数 */ public function __construct() { parent::__construct(); $this->app_path = dirname($_SERVER[SCRIPT_FILENAME])./; // 当前项目路径 } /** * 安装 */ function install() { // 执行安装代码 比如复制文件 这里一般是将开发的文件 一个个 copy 到对应的目录中去 // 递归复制文件夹 recurse_copy($this->app_path.plugins/function/helloworld/www/,$this->app_path); } /** * 卸载插件 */ function uninstall() { // 执行卸载代码 比如删除文件 将安装时 复制好的 插件文件 一个个删除掉 delFile($this->app_path.Application/Admin/Controller/HelloWorldController.class.php); delFile($this->app_path.Application/Admin//View/HelloWorld); // 删除HelloWorld目录下所有文件 rmdir($this->app_path.Application/Admin//View/HelloWorld); // 删除目录 HelloWorld } /** * 安装 sql 语句 * 这里的sql 可以的文件导入 也可以直接写死 插件要用到的新表 数据等 */ function install_sql() { $sql = file_get_contents($this->app_path.plugins/function/helloworld/install.sql); return $sql; } /** * 卸载 sql 语句 * 把插件相关的数据删除掉. */ function uninstall_sql() { $sql = file_get_contents($this->app_path.plugins/function/helloworld/uninstall.sql); return $sql; } } |
