Project

General

Profile

Actions

Developing a module or plugin for Virtuemart 2 » History » Revision 9

« Previous | Revision 9/16 (diff) | Next »
Stephen Roberts, 02/16/2012 06:31 AM


Developing a module or plugin for VirtueMart 2

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

Use
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. Then use

$config = VmConfig::loadConfig();

to load the configuration values, you can then easily access them with

VmConfig::get('yourVariable','default');

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

$config->jQuery();
$config->jVm();

or for the css use
$config->cssSite();

adding Virtuemart 2 menu to your component
IN view.php.html use
-----------------------------
if(!class_exists('VmView'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmview.php');
class vmg_exportViewCategory extends VmView
-----------------------------

in tmpl/default.php for eg.

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

-----------------------------

After your HTML codes
-----------------------------
AdminUIHelper::endAdminArea();
-----------------------------
in controllers if model are wanted

if(!class_exists('VmModel'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'vmmodel.php');

$model = VmModel::getModel($this->vmView);

or you can use

function vmModel($model=null){
if(!class_exists('ShopFunctions'))require(JPATH_VM_ADMINISTRATOR.DS.'helpers'.DS.'shopfunctions.php');
return ShopFunctions::getModel($model);

to use vm2 tables

JTable::addIncludePath(JPATH_VM_ADMINISTRATOR.DS.'tables');

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

Updated by Stephen Roberts almost 13 years ago · 9 revisions