0

我从事 vtiger CRM 工作,对于这个 CRM,我需要开发一个插件,安装后可以通过组织或潜在客户详细信息视图进行访问。

我已经成功地达到了我的插件的这个级别。对于我的模块的链接,我使用了 setRelatedList API,我的代码是

include_once('vtlib/Vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('Payslip');
$accountsModule = Vtiger_Module::getInstance('Accounts');
$relationLabel  = 'Accounts';
$moduleInstance->setRelatedList(
      $accountsModule, $relationLabel, Array('ADD','SELECT')
);

我的插件的名称是 mailAddon,它显示在内置详细信息模块的侧栏上,如果单击我的插件,它应该根据我的要求从我定义的表中获取数据,而不是任务。我只想知道如何扩展 vtiger 的这种行为。

谢谢

4

2 回答 2

0

您需要在模块文件中创建一个函数(DIR = modules/YourModuleFolder/YourModuleName.php)。这里

function vtlib_handler($modulename, $event_type) {
   if ($event_type == 'module.postinstall') {
      $this->setModuleRelatedDependencies();
   } else if ($event_type == 'module.disabled') {
      $this->unsetModuleRelatedDependencies();
   } else if ($event_type == 'module.enabled') {
      $this->setModuleRelatedDependencies();
   } else if ($event_type == 'module.preuninstall') {
      $this->unsetModuleRelatedDependencies();
   } else if ($event_type == 'module.preupdate') {
      // TODO Handle actions before this module is updated.
   } else if ($event_type == 'module.postupdate') {
     // TODO Handle actions before this module is updated.
   }
}

然后在您的文件中创建这些函数setModuleRelatedDependenciesunsetModuleRelatedDependencies

像这样

function setModuleRelatedDependencies(){
   global $log;
   $moduleName = Vtiger_Module::getInstance('YourModule');
   foreach ($this->dependentModules as $module) { //Defind How many module you want in dependent
       $moduleInstance = Vtiger_Module::getInstance($module);                                 

       $moduleInstance->setRelatedList($moduleName, 'YourModule', array(),'get_dependents_list'  );
   }
      $log->fatal('Successfully added Module Related lists');
 }

这是为了卸载你的插件

function unsetModuleRelatedDependencies(){
    global $log;
    $moduleName = Vtiger_Module::getInstance('YourModule');
    foreach ($this->dependentModules as $module) {//Defind How many module you want in dependent
        $moduleInstance = Vtiger_Module::getInstance($module);

         $moduleInstance->unsetRelatedList($moduleName, 'YourModule', 'get_dependents_list');
    }
    $log->fatal('Successfully removed Module Related lists');

}

于 2019-03-18T06:47:52.040 回答
0

会很晚,但是是的,您可以使用默认函数和自定义函数获取插件数据。要使其正常工作,只需转到vtiger_relatedlists表格并使用您的模块选项卡 ID 找到您的条目。只需使用您在代码中遗漏的函数名称更新该行。您可以将函数名称设置为get_dependents_listget_related_list根据您的模块结构。这是脚本以及设置的位置和内容。希望这会帮助你。

http://prntscr.com/emny6v

于 2017-03-21T13:36:11.720 回答