更改SugarCRM 7中的子面板顺序

kar*_*gen 3 php customization sugarcrm

如何通过代码或通过GUI更改每个子面板上的顺序?在Sugar 6中,用户可以简单地通过拖放每个模块下的子面板来改变顺序.据我所知,这在7.x中是不可能的.我试图改变

'order' => 1 
Run Code Online (Sandbox Code Playgroud)

custom/Extension/modules/Opportunities/Ext/Layoutdefs/some_file.php 
Run Code Online (Sandbox Code Playgroud)

没有运气......

kar*_*gen 5

更新: 正如UTAlan所说,从7.5.0版开始,这将成为Sugar的库存功能的一部分:https://web.sugarcrm.com/support/issues/66590

在此之前,这是原因和解决方案:

这个'order' => 1,目前似乎不适用于Sugar 7.

复制文件

modules/Opportunities/clients/base/layouts/subpanels/subpanels.php

custom/modules/Opportunities/clients/base/layouts/subpanels/subpanels.php

现在,将您的自定义子面板定义添加到数组的开头或您想要的任何顺序.

我的例子现在看起来像这样:

$viewdefs['Opportunities']['base']['layout']['subpanels'] = array(
    'components' => array(
        // This is my custom module
        array(
            'layout' => 'subpanel',
            'label' => 'LBL_OPPORTUNITIES_FOOBAR_TITLE',
            'context' => array(
                'link' => 'opportunities_foobar_1',
            ),
        ),

        .. // Code ommited
        array(
            'layout' => 'subpanel',
            'label' => 'LBL_EMAILS_SUBPANEL_TITLE',
            'context' => array (
                'link' => 'archived_emails',
            ),
        ),
    ),
    'type' => 'subpanels',
    'span' => 12,
);
Run Code Online (Sandbox Code Playgroud)

答案很长:

为什么'order'=> 1不再工作?

内部include/MetaDataManager/MetaDataConverter.php:327:

public function toLegacySubpanelLayoutDefs(array $layoutDefs, SugarBean $bean)    {
   ..
   foreach ($layoutDefs as $order => $def) {
   ..
       $return[$def['context']['link']] = array(
                'order' => $order,
    ..
 }
Run Code Online (Sandbox Code Playgroud)

在视图中呈现的顺序基于每个bean-name在此文件中的"components"键内插入的顺序: modules/Opportunities/clients/base/layouts/subpanels/subpanels.php

核心模块在机会的子面板文件中进行了硬编码.