2012-10-10 51 views
4

我有一个简单的问题,但可能对我来说很严重,我做了自定义字段,并将它们全部添加到Leads模块的custom\modules\Leads\metadata\detailviewdefs.php(detailview布局)中,但问题是我必须制作一个安装程序包变化。我使用自定义字段进行管理,并通过清单将其复制到custom\Extension\modules\Leads\Ext\Vardefs中。现在我不知道如何通过清单应用detailviewdefs更改(在detailview中添加新字段面板)。重点在于现有的detailview布局不应该改变,只能在其中添加一个新的面板。详细视图SugarCRM可安装更改

在我看来可能的解决方案就像我应该在$ layout_defs数组$layout_defs["Leads"]["DetailView"] ['panels']['panel_name']中添加代码并将其放在custom\Extension\modules\Leads\Ext\Layoutdefs\中,并通过清单复制Layoutdefs文件。我尝试过,但似乎没有工作。 如果可以,请寻找智能解决方案共享。

增加: 即使我出口模块的变化从Studio ->export Customizations和进口在其他情况下与module builder。它覆盖较新实例中的所有以前的自定义文件(自定义)(是否不是SugarCRM中的限制),但我的要求是仅在新实例的详细视图中添加更改。

回答

1

我发现糖的ModuleInstaller类的以下功能可以通过manifest script添加或删除布局中的字段。这些功能将同时向editviewdetail view添加/删除字段。只需添加下列行post_install/pre_install没有必要要求什么,

$installer_func = new ModuleInstaller(); 
    $layoutAdditions = array('Users' => 'users_access'); 

Users模块添加users_access领域:

$installer_func->removeFieldsFromLayout($layoutAdditions); 

希望:

$installer_func->addFieldsToLayout($layoutAdditions); 

Users模块删除users_access场它在帮助。

曼苏尔

+0

你的解决方案听起来很有趣。但让我知道如果我可以添加自定义JS代码的新元素,例如:一些文本框的onblur。如果有一个现有的元素,例如:COntacts中的first_name和我想添加onblur函数,我该怎么做? – user3286692

2

这是一个艰难的。有两个我知道的选项。 1)为用户提供有关如何使用Studio将这些字段添加到布局的指导2)在post_install.php脚本中,模仿Studio布局部署如何将字段插入到任何给定布局中(最佳做法是创建一个新的如果大规模分发的话,所有领域的面板都可以)。

+0

感谢的@egg来回答,第一个选项是不适合我的情况下,我的领域并没有这么简单,从工作室(有customcode)只是补充,所以现在我对第二个选项,并期望去它可以解决我的问题... – mansoor