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
相关产品推荐
相关产品推荐

