Product Plugins » History » Revision 3
Revision 2 (Patrick Kohl, 10/08/2011 04:53 PM) → Revision 3/10 (Patrick Kohl, 10/08/2011 11:06 PM)
h1. Product Plugins
h2. for user
The product plugin is installed as a standard joomla plugin
To see it you must publish it in joomla extention after installation.
After you do that, you can find it in the customfields on edit Choice :
*Custom Field Type* : plugin
After choicing the plugin you can setup the defaut value depending on your plugin.
h2. for developper.
h3. Language files :
XML install file must use the name in this form plg_vmcustom_YOURPLUGINNAME
EG. for textinput french and english
<languages>
<language tag="en-GB">en-GB.plg_vmcustom_textinput.ini</language>
<language tag="fr-FR">fr-FR.plg_vmcustom_textinput.ini</language>
</languages>
the constructor include directly the language file to simplify using JTEXT
Try to always use this convention name in the ini files :
VMCUSTOM_YOURPLUGINNAME_STRING="my string in english"
EG. for texinput plugin , string : size
VMCUSTOM_TEXTINPUT_INPUT_SIZE="Size of input"
h3. Write your plugin :
_List of function to write in your plugin_
*onProductEdit($field,$param,$row, $product_id);*
render the plugin with param to display on product edit customfields TAB
(called by customfields inputTypePlugin)
*onDisplayProductFE( $field, $param, $product, $idx);*
display the plugin on product FE
return $html
*onViewCartModule( $product,$custom_param,$productCustom, $row);*
display the product plugin on cart module
return $html
*onViewCart($product, $param,$productCustom, $row);*
display the product plugin on cart
return $html
*onViewCartOrder($product, $param,$productCustom, $row)*
handel $param before adding it in the order
return $param;
*onViewOrderFE($item, $param,$productCustom, $row);*
display the plugin in order for customers
$item is the order item line
Eg. to Get the statut ( $item->order_status == 'S' )
*onViewOrderBE($item, $param,$productCustom, $row);*
display the plugin in order for vendor
$item is the order item line
*modifyPrice( $product, $field,$param,$selected )*
overide the defaut price modifation by plugin
you have to rewrite it in your plugin to do other calculations
_you must return $field->custom_price at end to include your changes or the price varaint is set to 0;_
h3. Use of plugin XML parameters :
*XML Exemple for textinput* TODO
<pre>
<?xml version="1.0" encoding="UTF-8" ?>
<install version="1.5" type="plugin" group="vmcustom" >
<name>VMCustom - textinput</name>
<creationDate>June 2011</creationDate>
<author>The VirtueMart Development Team</author>
<authorUrl>http://www.virtuemart.net</authorUrl>
<copyright>Copyright (C) 2004-2011 Virtuemart Team. All rights reserved.</copyright>
<license>http://www.gnu.org/licenses/gpl-3.0.html GNU/GPL</license>
<version>1.9.8</version>
<description>text input plugin for product</description>
<languages>
<language tag="en-GB">en-GB.plg_vmcustom_textinput.ini</language>
<language tag="fr-FR">fr-FR.plg_vmcustom_textinput.ini</language>
</languages>
<files>
<filename plugin="textinput">textinput.php</filename>
</files>
<params addpath="/administrator/components/com_virtuemart/elements">
<param type="vmjpluginwarning" />
<param name="custom_name" type="text" size="20" default="COM_VIRTUEMART_COMMENT" label="VMCUSTOM_NAME_INFO" description="VMCUSTOM_NAME_INFO_DESC" />
<param name="custom_size" type="text" size="5" default="10" label="VMCUSTOM_TEXTINPUT_SIZE" description="VMCUSTOM_TEXTINPUT_SIZE_DESC" />
<param name="custom_price_by_letter" type="list" default="0" label="VMCUSTOM_PRICE_BY_LETTER" description="VMCUSTOM_PRICE_BY_LETTER_DESC" >
<option value="0">No</option>
<option value="1">Yes</option>
</param>
</params>
</install>
</pre>
*YOu can see somes differences with joomla standard XML files :*
<pre>
<install version="1.5" type="plugin" group="vmcustom" >
</pre>
inform joomla the plugin is a "vmcustom" plugin(product customfield plugin)
<pre>
<params addpath="/administrator/components/com_virtuemart/elements">
</pre>
Overide the joomla system by virtuemart 2 to enchance it.
_Always add this or your plugin have chance to not work_
<pre>
<param type="vmjpluginwarning" />
</pre>
inform that the parameters are saved by virtuemart2 for each plugin variant.
h3. transmited parameters by functions
TODO