我有以下情况:没有名字或姓氏的联系人,事实上,他们只有一个电子邮件地址。
我可以很好地使用这些联系人,但是当我在任何地方使用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';
}
但是,我宁愿拥有升级安全解决方案,因此这将成为下一个挑战。
答案 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'时,将进行实际保存。