Developing a module or plugin for VirtueMart 2

Documentation for the VirtueMart 2 API :
When you want to develop your own extension for VirtueMart, then these hints should help you get started:

if (!class_exists( 'VmConfig' )) require(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_virtuemart'.DS.'helpers'.DS.'config.php');
to load the configuration object in your extension. Now you have loaded the main API of VirtueMart 2. To be sure that the vm config is loaded, you may use

$config = VmConfig::loadConfig();

You can then easily access them with


After loading the VmConfig you should always use the vm path constants to access files

JPATH_VM_SITE = JPATH_ROOT.DS.'components'.DS.'com_virtuemart' );
JPATH_VM_ADMINISTRATOR = JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_virtuemart' );

For performance reasons you should always use the

if (!class_exists( 'MyClass' )) require (JPATH_VM_ADMINISTRATOR.DS....)

construction, dont use require_once

Loading and instancing a model is very easy in Vm, just use

$mynameModel = VmModel::getModel('myname');

for example: $currencyModel = VmModel::getModel('currency');

When you want to access the js used in vm then load them with


or for the css use

adding Virtuemart 2 menu to your component
IN view.php.html use
class vmg_exportViewCategory extends VmView

in tmpl/default.php for eg.

before your HTML codes
$lang = JFactory::getLanguage();
$extension = 'com_virtuemart';
$lang->load($extension, $base_dir);


After your HTML codes
----------------------------- *

to use vm2 tables


Adding an entry to Virtuemart menu
ON your installation SQL
INSERT INTO `#__virtuemart_adminmenuentries` (`id`, `module_id`, `parent_id`, `name`, `link`, `depends`, `icon_class`, `ordering`, `published`, `tooltip`, `view`, `task`) VALUES
(null, 77, 0, 'COM_MYCOMPONENT', 'index.php?option=com_mycomponent', '', 'vmicon vmicon-16-to_do_list_cheked_1', 2, 1, '', 'myview', 'mytask');

This example add an entry in 'tool' menu (module_id 77) with icon vmicon-16-to_do_list_cheked_1
result link is : index?option=com_mycomponent&view=myview&task=mytask

For shipment, payment, or other plugin development please look here Plugin system or for modules here Modules system