Developing a module or plugin for Virtuemart 2 » History » Revision 10
Revision 9 (Stephen Roberts, 02/16/2012 06:31 AM) → Revision 10/16 (Patrick Kohl, 02/16/2012 02:07 PM)
h1. 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');@ *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?option=com_mycomponent', '', 'vmicon vmicon-16-to_do_list_cheked_1', 2, 1, '', 'myview', 'mytask');@ This exemple 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]]