vtigercrm や f-revocrm で新しいモジュールを作る

vtigercrm 6.x や f-revocrm 6.x で、新しいモジュールを作りたい場合。

まずは空っぽの最低限の機能を備えただけのモジュールを作ります。

インストールしてあるディレクトリに移動し、console.php を実行すると、処理内容についてのプロンプトが出ます。

 

$ php vtlib/tools/console.php

Choose the options below:
1. Create New Module.
2. Create New Layout.
3. Create New Language Pack.
4. Create Test Language Pack.
5. Import Module.
6. Update Module.
7. Remove Module.
Enter your choice:

 

新しいモジュールを作りたいので 1 を選んでいきましょう。

 

Enter your choice: 1
>>> MODULE <<<
Enter module name: sampleModule
Entity field (Name): name
Creating ...DONE.

 

Enter module name でモジュール名を指定します。これはアルファベットにしておきます。今回は sampleModule。

エンティティフィールド(入力必須?)のところにはフィールドをとりあえず一つ準備します。今回は name とします。キーは別でもっているっぽいので、これはプライマリキーではないようです。

ここまでの処理で、モジュールが作成され、管理画面のモジュール一覧に載り、基本的な php ファイルが配置されます。

あとは好きなだけフィールドを足していきましょう。

他のモジュールと関連付けるには、vtlib を使ったちょっとしたコードを書いてあげればいけます。

たとえば、いま作ったばかりの sampleModule → Contacts(顧客担当者)の関連付けをしたい場合は以下のような感じです。

 

<?php
$Vtiger_Utils_Log = true;
include_once('vtlib/Vtiger/Module.php');
$moduleInstance = Vtiger_Module::getInstance('sampleModule');
$contactsModule = Vtiger_Module::getInstance('Contacts');
$relationLabel = 'Contacts';
$moduleInstance->setRelatedList(
$contactsModule, $relationLabel, Array('ADD','SELECT')
);
?>

 

逆向きの関連付けの場合は、モジュール名の指定を逆にすればいけるでしょう。

vtlib 呼ぶコード書くときは、最初に $Vtiger_Utils_Log = true; と入れておくと、何の処理をしたか出力してくれるので確認に便利です。