You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 06:48:20