2012-10-10 78 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