【问题标题】:create custom module in vtiger 6在 vtiger 6 中创建自定义模块
【发布时间】:2014-06-19 08:04:16
【问题描述】:

您好,我是 vtiger 的新手。现在我想知道的是如何在不使用现有模块设计器或其他相同东西的情况下创建服装模块。例如,我想创建一个自定义模块来保存某个人的姓名和姓氏。实际上我在互联网上进行了研究,并没有找到关于如何在 vtiger 6 中专门创建服装模块的清晰教程。你有关于如何在 vtiger 6 中创建服装模块的好的教程或链接。非常感谢您的帮助。

【问题讨论】:

    标签: module vtiger


    【解决方案1】:

    我在制作实体模块时发现了一些有趣的教程,这是链接。 http://community.vtiger.com/help/vtigercrm/developers/extensions/examples/entity-module.html,它正在工作。

    【讨论】:

      【解决方案2】:

      首先在modules中新建一个文件夹(module name without space),将vtlib/ModuleDir/6.0.0文件中的文件复制到modules/newmodule中创建的文件夹中

      ModuleName.php 的名称更改为您的模块名称(没有空格)和languages\en_us 中的另外一个ModuleName.php 文件。

      打开modulename.php to change the class name, $table_name , $table_index 并在languages\en_us 中使用您的模块名称。

      在根目录下创建具有任意名称的新文件。插入下面的代码以添加字段和模块。

      <?php
      include_once 'vtlib/Vtiger/Module.php';
      
      $Vtiger_Utils_Log = true;
      
      $MODULENAME = 'Persons';
      
      $moduleInstance = Vtiger_Module::getInstance($MODULENAME);
      if ($moduleInstance || file_exists('modules/'.$MODULENAME)) {
          echo "Module already present - choose a different name.";
      } else {
          $moduleInstance = new Vtiger_Module();
          $moduleInstance->name = $MODULENAME;
          $moduleInstance->parent= 'Tools';
          $moduleInstance->save();
      
          // Schema Setup
          $moduleInstance->initTables();
      
          // Field Setup
          $block = new Vtiger_Block();
          $block->label = 'LBL_'. strtoupper($moduleInstance->name) . '_INFORMATION';
          $moduleInstance->addBlock($block);
      
          $blockcf = new Vtiger_Block();
          $blockcf->label = 'LBL_CUSTOM_INFORMATION';
          $moduleInstance->addBlock($blockcf);
      
          $field1  = new Vtiger_Field();
          $field1->name = 'lastname';
          $field1->label= 'Last Name';
          $field1->uitype= 2;
          $field1->column = $field1->name;
          $field1->columntype = 'VARCHAR(255)';
          $field1->typeofdata = 'V~M';
          $block->addField($field1);
      
          $moduleInstance->setEntityIdentifier($field1);
      
          $field2  = new Vtiger_Field();
          $field2->name = 'firstname';
          $field2->label= 'First Name';
          $field2->uitype= 1;
          $field2->column = $field2->name;
          $field2->columntype = 'VARCHAR(255)';
          $field2->typeofdata = 'V~M';
          $block->addField($field2);
      
          // Recommended common fields every Entity module should have (linked to core table) 
          $mfield1 = new Vtiger_Field();
          $mfield1->name = 'assigned_user_id';
          $mfield1->label = 'Assigned To';
          $mfield1->table = 'vtiger_crmentity';
          $mfield1->column = 'smownerid';
          $mfield1->uitype = 53;
          $mfield1->typeofdata = 'V~M';
          $block->addField($mfield1);
      
          $mfield2 = new Vtiger_Field();
          $mfield2->name = 'CreatedTime';
          $mfield2->label= 'Created Time';
          $mfield2->table = 'vtiger_crmentity';
          $mfield2->column = 'createdtime';
          $mfield2->uitype = 70;
          $mfield2->typeofdata = 'T~O';
          $mfield2->displaytype= 2;
          $block->addField($mfield2);
      
          $mfield3 = new Vtiger_Field();
          $mfield3->name = 'ModifiedTime';
          $mfield3->label= 'Modified Time';
          $mfield3->table = 'vtiger_crmentity';
          $mfield3->column = 'modifiedtime';
          $mfield3->uitype = 70;
          $mfield3->typeofdata = 'T~O';
          $mfield3->displaytype= 2;
          $block->addField($mfield3);
      
          // Filter Setup
          $filter1 = new Vtiger_Filter();
          $filter1->name = 'All';
          $filter1->isdefault = true;
          $moduleInstance->addFilter($filter1);
          $filter1->addField($field1)->addField($field2, 1)->addField($field3, 2)->addField($mfield1, 3);
      
          // Sharing Access Setup
          $moduleInstance->setDefaultSharing();
      
          // Webservice Setup
          $moduleInstance->initWebservice();
      
          mkdir('modules/'.$MODULENAME);
          echo "OK\n";
      }
      ?>
      

      【讨论】:

      • 非常感谢,我只是想澄清一些事情。在 ModuleName.php 中有很多变量,如 $list_fields 我必须更改它吗?以及在我完成所有这些之后我会做什么。是否有任何脚本可以运行以使其工作?感谢您的时间。
      • 不要更改任何变量名。 (仅将 替换为您的模块名)。您将此共享代码与任何文件名(如 abc.php)放在您的 vtiger6 根目录中并从浏览器运行此文件,例如:vtigercrmurl/abc.php
      • 这就是我所做的。 1. 我在模块内创建 Persons 文件夹,因为它是我的模块的名称,里面是我在 6.0.0 中复制的内容,然后我编辑你所说的那些内容。我还编辑 和其他类似的东西。 2.我把你给的代码放在根目录下,我按照你说的运行了它。但是警告显示。“模块已经存在-选择一个不同的名称。” .我所做的是先运行代码,然后再将人员文件夹放入模块中。没有发生错误,但是当我尝试查看人员模块时,出现错误“Permission denied by name”。
      • 好像出了点问题。您尝试创建的模块,它已经创建。在新的 vtiger6 实例上尝试。如果您在实时服务器上,请提供对文件的完全权限。
      【解决方案3】:

      有一个简单的Console tool 用于创建新的自定义模块:

      打开cmd提示符,进入vtlib/tools文件夹,执行Console.php文件:

      >cd C:\{$YourPathToVtiger}\apache\htdocs\vtigerCRM\vtlib\tools
      >php -f Console.php
      

      输入“1”来创建一个新模块并设置“模块名称”和“实体字段”(实体字段是在窗口顶部以粗体显示的字段,当您打开该模块的实例时模块)。

      现在新模块已创建并安装,您可以从 vTiger GUI 轻松自定义它(添加新字段、工作流等)。

      【讨论】:

      • 谢谢!它更快更容易。
      【解决方案4】:

      在 Vtiger 的根文件夹中创建引导 vtlib 脚本以激活具有特定文件名的模块条目。

      create_expense.php

      <?php
      include_once 'vtlib/Vtiger/Module.php';
      
      $Vtiger_Utils_Log = true;
      
      $MODULENAME = 'Expenses';
      
      $moduleInstance = Vtiger_Module::getInstance($MODULENAME);
      if ($moduleInstance || file_exists('modules/'.$MODULENAME)) {
          echo "Module already present - choose a different name.";
      } else {
          $moduleInstance = new Vtiger_Module();
          $moduleInstance->name = $MODULENAME;
          $moduleInstance->parent= 'Tools';
          $moduleInstance->save();
      
          // Schema Setup
          $moduleInstance->initTables();
      
          // Field Setup
          $block = new Vtiger_Block();
          $block->label = 'LBL_'. strtoupper($moduleInstance->name) . '_INFORMATION';
          $moduleInstance->addBlock($block);
      
          $blockcf = new Vtiger_Block();
          $blockcf->label = 'LBL_CUSTOM_INFORMATION';
          $moduleInstance->addBlock($blockcf);
      
          $field1  = new Vtiger_Field();
          $field1->name = 'summary';
          $field1->label= 'Summary';
          $field1->uitype= 2;
          $field1->column = $field1->name;
          $field1->columntype = 'VARCHAR(255)';
          $field1->typeofdata = 'V~M';
          $block->addField($field1);
      
          $moduleInstance->setEntityIdentifier($field1);
      
          $field2  = new Vtiger_Field();
          $field2->name = 'expenseon';
          $field2->label= 'Expense On';
          $field2->uitype= 5;
          $field2->column = $field2->name;
          $field2->columntype = 'Date';
          $field2->typeofdata = 'D~O';
          $block->addField($field2);
      
          $field3  = new Vtiger_Field();
          $field3->name = 'expenseamount';
          $field3->label= 'Amount';
          $field3->uitype= 71;
          $field3->column = $field3->name;
          $field3->columntype = 'VARCHAR(255)';
          $field3->typeofdata = 'V~M';
          $block->addField($field3);
      
          $field3  = new Vtiger_Field();
          $field3->name = 'description';
          $field3->label= 'Description';
          $field3->uitype= 19;
          $field3->column = 'description';
          $field3->table = 'vtiger_crmentity';
          $blockcf->addField($field3);
      
          // Recommended common fields every Entity module should have (linked to core table)
          $mfield1 = new Vtiger_Field();
          $mfield1->name = 'assigned_user_id';
          $mfield1->label = 'Assigned To';
          $mfield1->table = 'vtiger_crmentity';
          $mfield1->column = 'smownerid';
          $mfield1->uitype = 53;
          $mfield1->typeofdata = 'V~M';
          $block->addField($mfield1);
      
          $mfield2 = new Vtiger_Field();
          $mfield2->name = 'CreatedTime';
          $mfield2->label= 'Created Time';
          $mfield2->table = 'vtiger_crmentity';
          $mfield2->column = 'createdtime';
          $mfield2->uitype = 70;
          $mfield2->typeofdata = 'T~O';
          $mfield2->displaytype= 2;
          $block->addField($mfield2);
      
          $mfield3 = new Vtiger_Field();
          $mfield3->name = 'ModifiedTime';
          $mfield3->label= 'Modified Time';
          $mfield3->table = 'vtiger_crmentity';
          $mfield3->column = 'modifiedtime';
          $mfield3->uitype = 70;
          $mfield3->typeofdata = 'T~O';
          $mfield3->displaytype= 2;
          $block->addField($mfield3);
      
          // Filter Setup
          $filter1 = new Vtiger_Filter();
          $filter1->name = 'All';
          $filter1->isdefault = true;
          $moduleInstance->addFilter($filter1);
          $filter1->addField($field1)->addField($field2, 1)->addField($field3, 2)->addField($mfield1, 3);
      
          // Sharing Access Setup
          $moduleInstance->setDefaultSharing();
      
          // Webservice Setup
          $moduleInstance->initWebservice();
      
          mkdir('modules/'.$MODULENAME);
          echo "OK\n";
      }
      

      现在根据以下文件夹结构创建新文件夹。

      目录结构

      vtigercrm/
          modules/
              Expenses/
                  Expenses.php - class Expenses
          languages/
              en_us/
                  Expenses.php
      

      接下来创建一个Expenses.php 类文件

      <?php
      
      include_once 'modules/Vtiger/CRMEntity.php';
      
      class Expenses extends Vtiger_CRMEntity {
          var $table_name = 'vtiger_expenses';
          var $table_index= 'expensesid';
      
          var $customFieldTable = Array('vtiger_expensescf', 'expensesid');
      
          var $tab_name = Array('vtiger_crmentity', 'vtiger_expenses', 'vtiger_expensescf');
      
          var $tab_name_index = Array(
                  'vtiger_crmentity' => 'crmid',
                  'vtiger_expenses' => 'expensesid',
                  'vtiger_expensescf'=>'expensesid');
      
          var $list_fields = Array (
                  /* Format: Field Label => Array(tablename, columnname) */
                  // tablename should not have prefix 'vtiger_'
                  'Summary' => Array('expenses', 'summary'),
                  'Assigned To' => Array('crmentity','smownerid')
          );
          var $list_fields_name = Array (
                  /* Format: Field Label => fieldname */
                  'Summary' => 'summary',
                  'Assigned To' => 'assigned_user_id',
          );
      
          // Make the field link to detail view
          var $list_link_field = 'summary';
      
          // For Popup listview and UI type support
          var $search_fields = Array(
                  /* Format: Field Label => Array(tablename, columnname) */
                  // tablename should not have prefix 'vtiger_'
                  'Summary' => Array('expenses', 'summary'),
                  'Assigned To' => Array('vtiger_crmentity','assigned_user_id'),
          );
          var $search_fields_name = Array (
                  /* Format: Field Label => fieldname */
                  'Summary' => 'summary',
                  'Assigned To' => 'assigned_user_id',
          );
      
          // For Popup window record selection
          var $popup_fields = Array ('summary');
      
          // For Alphabetical search
          var $def_basicsearch_col = 'summary';
      
          // Column value to use on detail view record text display
          var $def_detailview_recname = 'summary';
      
          // Used when enabling/disabling the mandatory fields for the module.
          // Refers to vtiger_field.fieldname values.
          var $mandatory_fields = Array('summary','assigned_user_id');
      
          var $default_order_by = 'summary';
          var $default_sort_order='ASC';
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-27
        • 1970-01-01
        • 1970-01-01
        • 2020-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多