更改sugarcrm中字段的显示逻辑

时间:2015-02-16 14:58:31

标签: php sugarcrm

我有以下情况:没有名字或姓氏的联系人,事实上,他们只有一个电子邮件地址。

我可以很好地使用这些联系人,但是当我在任何地方使用listview时(例如显示公司的所有联系人),现在无法点击联系人(通常你会点击这个名字)。

我正在寻找一种方法来解决这个问题,例如通过显示像'name not known'这样的可点击文本,但无法弄清楚如何做到这一点。我一直在查看手册以及modules目录和sugarfields目录中的文件,但是无法弄明白。

我最接近的是/sugarcrm/modules/Contacts/metadata/listviewdefs.php 这段代码所在的位置:

$listViewDefs['Contacts'] = array(
    'NAME' => array(
        'width' => '20%',       
        'label' => 'LBL_LIST_NAME', 
        'link' => true,
        'contextMenu' => array('objectType' => 'sugarPerson', 
                               'metaData' => array('contact_id' => '{$ID}', 
                                                   'module' => 'Contacts',
                                                   'return_action' => 'ListView', 
                                                   'contact_name' => '{$FULL_NAME}', 
                                                   'parent_id' => '{$ACCOUNT_ID}',
                                                   'parent_name' => '{$ACCOUNT_NAME}',
                                                   'return_module' => 'Contacts', 
                                                   'return_action' => 'ListView', 
                                                   'parent_type' => 'Account', 
                                                   'notes_parent_type' => 'Account')
                              ),
        'orderBy' => 'name',
        'default' => true,
        'related_fields' => array('first_name', 'last_name', 'salutation', 'account_name', 'account_id'),
        ), 

某处必须有一个将first和lastname连接在一起的函数......


编辑:我找到了一个解决方案:

实际的连接函数位于/sugarcrm/include/SugarObjects/templates/person/person.php中,称为_create_proper_name_field()

我可以通过在函数末尾添加类似的东西来修改我的特定情况的输出:

if (empty(trim($full_name))){
    $full_name = 'Name unknown'; 
}

但是,我宁愿拥有升级安全解决方案,因此这将成为下一个挑战。

1 个答案:

答案 0 :(得分:1)

不要编辑核心,因为下一次升级会破坏SugarCRM实例。使用逻辑挂钩升级安全:

在/ custom / modules / Contacts /中创建一个'logic_hooks.php'文件 在该文件中,添加以下代码:

<?php

    $hook_array['before_save'][] = Array(1,'logic_fill_name','custom/modules/Contacts/logic_hooks/logics.php','ContactLogics','logic_fill_name');

完成此操作后。在/ custom / modules / Contacts / logic_hooks中创建文件'logics.php'。 在logics.php文件中,添加如下内容:

<?php

    require_once 'include/SugarQuery/SugarQuery.php';

    /**
     * Class ContactLogics
     */
    class ContactLogics {

        /**
         * @param $bean
         * @param $event
         * @param $arguments
         */
        public function logic_fill_name($bean, $event, $arguments) {
            if (empty(trim($bean->first_name)) && empty(trim($bean->last_name))){
                $bean->last_name = 'Name unknown'; 
            }
        }
    }

现在有些解释。编辑记录视图并按下保存按钮时,将触发逻辑挂钩'before_save'。当全名为空时,此代码会将全名更改为“Name unknown”。执行'before_save'时,将进行实际保存。