Create a simple module for Vtiger CRM

Shobin Markose's picture

Here I want to explain how to create a simple installable module for vtiger CRM. 

For creating a new installable module named 'testModule' for vtiger, we should have an xml file named: 'manifest.xml'. Contents of this file:
 
<?xml version="1.0"?>
<module>
<type>extension</type>
<name>testModule</name>
<label>testModule</label>
<parent>Tools</parent>
<version>1.0</version>
<dependencies>
<vtiger_version>5.2.1</vtiger_version>
</dependencies>
</module>
 
The module folder structure:
 
testModule->
        modules->testModule->index.php
        modules->testModule->language->en_us.lang.php
        manifest.xml
 
Write the index file for our purpose. Here is an example to print the 'Hello World' when clicking the module:
 
<?php
include_once('language/en_us.lang.php');
echo "<font color=red>".HELLO_WORLD."</font>";
?>
 
Contents of language/en_us.lang.php:
 
<?php
define('HELLO_WORLD','Hello World');
?>
 
Then we have to create a .zip archive file for installation via vtiger module manager. Create the 'testModule.zip' file inside the module folder 'testModule' and compress the contents 'modules' and 'manifest.xml' to the 'testModule.zip'.
 
Then install the zip file via vtiger 'Settings->Module Manger' menu. Go to custom modules tab and click on the 'Import New' button to install it.
 
 
 
 

After installation you can see the module under 'Tools' menu. The content will be:
 
 
Enjoy creating more modules!
 
<?php
define('HELLO_WORLD','Hello World');
?>
testModule->
        modules->testModule->index.php
        modules->testModule->language->en_us.lang.php
        manifest.xml
For creating a new installable module named 'testModule' for vtiger, we should have an xml file named: 'manifest.xml'. Contents of this file:Here I want to explain how to create a simple installable module for vtiger CRM.
For creating a new installable module named 'testModule' for vtiger, we should have an xml file named: 'manifest.xml'. Contents of this file:
Anonymous's picture

Hello, I created a module for

Hello,
I created a module for vtiger But when i upload this module in the module manager i got a error like:
dUnzip2: File 'manifest.xml' is not compressed in the zip.

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "test/vtlib/manifest-1369213987.xml" in G:\wamp\www\crmdev\vtlib\Vtiger\PackageImport.php on line 54

Warning: unlink(test/vtlib/manifest-1369213987.xml) [function.unlink]: No such file or directory in G:\wamp\www\crmdev\vtlib\Vtiger\PackageImport.php on line 55

What is the error? how can i fix this?

Anonymous's picture

I have done the job but when

I have done the job but when clicking on testModule it is giving following error

Warning: require(modules/Events/language/en_us.lang.php) [function.require]: failed to open stream: No such file or directory in C:\Program Files\vtigercrm-5.4.0\apache\htdocs\vtigerCRM\include\utils\utils.php on line 498.

I am using windows 7 and accesing the testModule folder outside of Vtiger installation folder.

Please help. Awaiting an early reply.

Regards
Sanjib

Rostam's picture

Hi Shobin, I just saw your

Hi Shobin, I just saw your tutorial. Though it's a few years old I want to thank for this! It's much more understandable than vtigers payslip tutorial.

If you could answer me one question I am fighting with would be so great.

How can I integrate the new module inside the Projects Module? It should look like all the other Modules in Projects->More Information. So that right above Project Tasks there is the modules title "testModule" and opens just like all the other ones...

Couldn't find a solution for this until now... and I must say I am very new to vtiger.

Appreciate your help.

Regards from Germany :-)

Anonymous's picture

i followed above instruction

i followed above instruction and created all files and folders but when i installed module its generate a
"dUnzip2: File 'manifest.xml' is not compressed in the zip." error and i also added below code in language file

<?php
$mod_strings 
= Array('HELLO_WORLD' => 'Hello World');
?>

Can u please help me

Anonymous's picture

Invalid file provided for

Invalid file provided for module import! Try Again. I have created as per above information but still it says invalid file..

please help me.

walter's picture

Hi, thanks for your

Hi,
thanks for your contribution on creating a new module, am in the process of creating one and am stuck in the middle of the process after doing all you had stated in importing the module in the module manager but i get an error "invalid file provided for module import! try again"...i will grateful appreciate your help.thank you.

Anonymous's picture

For anybody in the future

For anybody in the future that may happen to get slightly lost in this, I finally managed to figure it out a bit.

First, Shobin, thanks again for having a very simple tutorial on this... The others jump into something quite complex when all many of us want is a good starting point to work our way up with=)

en_us.lang.php must look like this: $mod_strings = Array('HELLO_WORLD' => 'Hello World');

If you are having trouble getting this module installed, do *not* create the source code or directory in the vTiger modules directory. Create them somewhere else entirely. vTiger will try to create the module itself when you import it! This was the source of many of my problems and I'm guessing the same thing causing everybody else problems.

Make sure you use the module folder structure exactly:

1) Create a directory called testModule
2) Inside that directory, create manifest.xml and directory called modules
3) Inside the modules directory, create another directory called testModule
4) Inside the new testModule directory (Should now look like testModule->modules->testModule), create index.php and a new directory called language.
5) Inside the language directory, create a file called en_us.lang.php

That should be it. The big thing is to make sure this wasn't created inside vTiger! Hope this helps people in the future!

Anonymous's picture

please help!!!! how can i

please help!!!!

how can i create a new module using vtlib. the procedure they have given in the vtlib pdf doesnt exactly tell us which file we should edit or use. am using vtigercrm 5.3.0

kind regards

zarah's picture

I liked it, and I thought

I liked it, and I thought there were a lot of subtleties and nuances that you don’t get right away. But that’s just my opinion, you’re completely entitled to yours.

Anonymous's picture

Hi Ryan, How's it

Hi Ryan,

How's it going?

Thanks for this wonderful post.

I followed your instruction but when the time comes for me to import I got this errors:

dUnzip2: File 'manifest.xml' is not compressed in the zip.

Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "test/vtlib/manifest-1311051151.xml" in C:\Program Files (x86)\vtigercrm-5.2.1\apache\htdocs\vtigerCRM\vtlib\Vtiger\PackageImport.php on line 54

Warning: unlink(test/vtlib/manifest-1311051151.xml) [function.unlink]: No such file or directory in C:\Program Files (x86)\vtigercrm-5.2.1\apache\htdocs\vtigerCRM\vtlib\Vtiger\PackageImport.php on line 55

This is how I made my folder structure:

newModule - > modules -> newModules -> index.php
newModule - > modules -> newModules -> language -> en_us.lang.php
newModule -> manifesst.xml

Your quick response will be appreciated.

Hamm