Vtiger7中如何通过Vtlib函数用PHP脚本导入导出自定义模块包
Vtiger 7 自定义模块标准安装包导出/导入实现方案
Vtiger 7 核心自带的Vtiger_Package类已经封装了符合官方规范的模块包打包、解析、安装全流程逻辑,不需要手动拼装zip包结构,直接调用Vtlib函数即可完成导出导入操作,具体实现如下:
一、导出已有自定义模块为标准安装包
将以下脚本放置在Vtiger 7根目录,命名为export_laptop.php,通过CLI或浏览器访问执行,即可生成标准格式的模块安装zip包,默认生成的包存储在test/vtlib目录下,脚本会自动创建不存在的目录。
<?php include_once 'vtlib/Vtiger/Module.php'; include_once 'vtlib/Vtiger/Package.php'; include_once 'includes/main/WebUI.php'; // 配置项:待导出的模块名称、导出包存储路径 $targetModule = 'Laptop'; $savePath = 'test/vtlib/'; if (!is_dir($savePath)) { mkdir($savePath, 0755, true); } $moduleIns = Vtiger_Module::getInstance($targetModule); if (!$moduleIns) { exit("错误:待导出的模块{$targetModule}不存在,请检查模块名配置"); } $package = new Vtiger_Package(); $exportRes = $package->export($moduleIns, $savePath.$targetModule.'.zip', false); if ($exportRes) { echo "导出成功,模块安装包路径:{$savePath}{$targetModule}.zip"; } else { echo "导出失败,请检查目录读写权限"; } ?>
导出的标准包会自动包含模块的块、字段、下拉选项配置、列表过滤器、权限规则、语言文件、模块核心逻辑代码,和Vtiger官方应用市场的模块包结构完全兼容。
二、导入标准模块安装包
将导出的zip包上传到服务器可访问路径,在Vtiger根目录创建import_laptop.php脚本,执行后即可自动完成模块安装、菜单挂载、权限初始化全流程,无需手动进入后台操作。
<?php include_once 'vtlib/Vtiger/Module.php'; include_once 'vtlib/Vtiger/Package.php'; include_once 'includes/main/WebUI.php'; // 配置项:待导入的zip包路径、模块挂载的父菜单 $packageFile = 'test/vtlib/Laptop.zip'; $parentMenu = 'Tools'; if (!file_exists($packageFile)) { exit("错误:模块安装包不存在,请检查路径配置"); } $package = new Vtiger_Package(); $moduleName = $package->getModuleNameFromZip($packageFile); // 重复安装校验 if (Vtiger_Module::getInstance($moduleName)) { exit("错误:模块{$moduleName}已存在,无法重复安装"); } // 执行包导入 $importRes = $package->import($packageFile); if (!$importRes) { exit("导入失败,请检查安装包完整性、文件权限"); } // 完成后续初始化配置 $moduleIns = Vtiger_Module::getInstance($moduleName); Settings_MenuEditor_Module_Model::addModuleToApp($moduleName, $parentMenu); $moduleIns->setDefaultSharing('Private'); $moduleIns->initWebservice(); echo "模块{$moduleName}安装成功"; ?>
注意事项
- 你之前创建Laptop模块的脚本存在一处bug:生成模块核心文件、语言文件时引用了未定义的
$field1变量,实际应该替换为你设置的实体标识字段$itemdeatils,否则导出的安装包会存在语法错误,建议先修正该问题再执行导出。 - 导出操作前建议先清理Vtiger缓存(删除
cache/目录下除index.html外的所有文件),避免导出的包携带旧的缓存配置导致导入异常。 Vtiger_Package的默认导出逻辑不会包含模块关联的工作流、定时任务、自定义关联关系配置,如果需要打包这类扩展内容,需要在导出脚本中额外将对应配置表数据写入安装包的manifest.xml定义文件中。
内容的提问来源于stack exchange,提问作者Santosh Kumar
相关产品推荐
相关产品推荐

