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

Vtiger 7.1:如何使用VTlib修改字段或区块的位置?

用VTlib简化Vtiger字段/区块位置修改

一、VTlib修改区块位置

VTlib封装了直接操作区块对象的方法,无需手动编写数据库更新语句,代码简洁高效:

// 加载VTlib区块类
require_once 'vtlib/Vtiger/Block.php';

// 获取目标区块(参数:区块显示名称,所属模块名)
$targetBlock = VTBlock::getInstance('LBL_ACCOUNT_INFORMATION', 'Accounts');

if ($targetBlock) {
    // 设置新的显示顺序(sequence值越小,区块越靠前)
    $targetBlock->sequence = 2;
    // 保存修改到数据库
    $targetBlock->save();
}

二、VTlib修改字段位置

字段的位置调整同样可以通过VTlib的字段类直接实现:

// 加载VTlib字段类
require_once 'vtlib/Vtiger/Field.php';

// 获取目标字段(参数:字段名,所属模块名)
$targetField = Vtiger_Field::getInstance('accountname', 'Accounts');

if ($targetField) {
    // 设置字段在所属区块内的显示顺序
    $targetField->sequence = 1;
    // 保存修改
    $targetField->save();
}

三、关于LayoutEditor.js的利用

后台的LayoutEditor.js是前端可视化调整布局的交互逻辑,它本质是通过AJAX请求后端SaveLayout接口批量更新区块和字段的sequence值。如果要在后端脚本复用该逻辑,可以直接调用对应的后端Action类,无需编写前端代码:

// 加载LayoutEditor相关处理类
require_once 'modules/LayoutEditor/actions/SaveLayout.php';

// 构造布局修改参数(示例:批量调整Accounts模块的区块顺序)
$requestParams = [
    'module' => 'Accounts',
    'layoutinfo' => json_encode([
        'blocks' => [
            ['blockid' => 1, 'sequence' => 1],
            ['blockid' => 3, 'sequence' => 2],
            ['blockid' => 2, 'sequence' => 3]
        ],
        // 如需同时调整字段顺序,添加fields数组:
        // 'fields' => [['fieldid' => 5, 'sequence' => 1], ...]
    ])
];

// 实例化请求对象并执行保存操作
$request = new Vtiger_Request($requestParams);
$saveAction = new LayoutEditor_SaveLayout_Action();
$saveAction->process($request);

这种方式适合批量修改多个区块/字段的场景,和后台可视化调整的逻辑完全一致。

内容的提问来源于stack exchange,提问作者JoeNutz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 05:58:18