更改SugarCRM 7中的子面板顺序

时间:2014-05-05 08:49:10

标签: php customization sugarcrm

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

'order' => 1 

in

custom/Extension/modules/Opportunities/Ext/Layoutdefs/some_file.php 

没有运气......

2 个答案:

答案 0 :(得分: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,
);

长答案:

为什么'order'=&gt; 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,
    ..
 }

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

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

答案 1 :(得分:0)

从版本7.5.0开始,这将成为Sugar的库存功能的一部分:https://web.sugarcrm.com/support/issues/66590