2014-06-19 13 views
5

Xin chào tôi là người mới trong vtiger. Bây giờ những gì tôi muốn biết là làm thế nào để tạo ra mô-đun costum mà không cần sử dụng thiết kế mô-đun hiện có hoặc các công cụ tương tự. Ví dụ tôi muốn tạo một mô-đun tùy chỉnh sẽ lưu tên và họ của một người nào đó. Trên thực tế tôi nghiên cứu trên internet, và tôi đã không tìm thấy một hướng dẫn rõ ràng về cách tạo ra một mô-đun costum cụ thể trong vtiger 6. Bạn có bất kỳ hướng dẫn hay liên kết tốt về cách tạo ra một mô-đun costum trong vtiger 6. Giúp đỡ của bạn được đánh giá rất cao.tạo mô-đun tùy chỉnh trong vtiger 6

Trả lời

6

Đầu tiên tạo thư mục mới (module name without space) trong mô-đun và sao chép tập tin từ vtlib/ModuleDir/6.0.0 tập tin vào thư mục được tạo ra trong modules/newmodule

Thay đổi tên của ModuleName.php với tên module của bạn (không có khoảng trắng) và thêm một ModuleName.php tập tin trong languages\en_us.

mở modulename.php to change the class name, $table_name , $table_index & cũng có sẵn trong languages\en_us với tên modulename của bạn.

Tạo tệp mới với bất kỳ tên nào trong thư mục gốc của bạn. Chèn mã bên dưới để thêm các trường và cũng là mô-đun.

<?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"; 
} 
?> 
+0

Cảm ơn bạn rất nhiều Tôi chỉ muốn làm rõ một cái gì đó. Trong ModuleName.php có rất nhiều biến như $ list_fields tôi có phải thay đổi nó không? và tôi sẽ làm gì sau khi tôi đã làm tất cả điều này. Có bất kỳ kịch bản để chạy để làm cho nó hoạt động? Cảm ơn thời gian. – Hope

+0

Không thay đổi bất kỳ tên biến nào. (Chỉ thay thế bằng tên modul của bạn). Bạn đặt mã chia sẻ này với bất kỳ tên tệp nào (như abc.php) trong thư mục gốc vtiger6 của bạn và chạy tệp này từ trình duyệt, ví dụ: http: // vtigercrmurl/abc.php – Shah

+0

Đây là những gì tôi đã làm. 1. Tôi tạo thư mục Persons bên trong module coz đó là tên module của tôi và bên trong nó là những thứ tôi đã sao chép trong 6.0.0, sau đó tôi chỉnh sửa những thứ bạn đã nói. Tôi cũng chỉnh sửa , và những thứ khác tương tự như nó. 2. Tôi đặt mã bạn đã đưa vào trong thư mục gốc và tôi đã chạy nó như những gì bạn đã nói.Nhưng hiển thị cảnh báo. "Module đã có mặt - chọn một tên khác." . những gì tôi đã làm là tôi chạy mã đầu tiên trước khi tôi đặt thư mục người bên trong các mô-đun. Không có lỗi xảy ra nhưng khi tôi cố gắng xem mô-đun người, lỗi "Quyền bị từ chối theo tên". – Hope

5

Có một đơn giản Console tool để tạo module tùy chỉnh mới:

mở dấu nhắc cmd, đi đến vtlib/thư mục cụ và chạy file Console.php:

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

Loại '1' cho Tạo mô-đun mới và đặt "Tên mô-đun" và "Trường thực thể" (trường Thực thể là trường sẽ được in đậm ở đầu cửa sổ, khi bạn mở một phiên bản của mô-đun đó).

Bây giờ mô-đun mới được tạo và cài đặt, và bạn có thể dễ dàng tùy chỉnh nó (thêm trường mới, luồng công việc và bất kỳ thứ gì) từ GUI vTiger.

+0

Cảm ơn bạn! Nó nhanh hơn và dễ dàng hơn. – AndreaTaroni86

2

Tạo tập lệnh vtlib bootstrap trong thư mục gốc của Vtiger để kích hoạt mục nhập mô-đun với một số tên tệp cụ thể.

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"; 
} 

Bây giờ, tạo thư mục mới theo bên dưới cấu trúc thư mục.

cấu trúc thư mục

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

Tiếp theo, tạo một tập tin lớp 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'; 
}