我设法创建了这个简单的插件,我需要它来在项目添加到购物车时触发方法,以及在结帐时发生的方法。但无论如何,这些方法都不会开火。我还在virtmart中看到另一个名为stockable的插件,它使用plgVmOnAddToCart并正确地触发它。但是在我的插件类中它根本不会发射。 这是我的插件中的代码,我该怎么做才能使它工作?谢谢
<?php
defined('_JEXEC') or die( 'Direct Access to ' . basename( __FILE__ ) . ' is not allowed.' ) ;
if (!class_exists('vmCustomPlugin')) require(JPATH_VM_PLUGINS . DS . 'vmcustomplugin.php');
class plgVmAftercheckout extends vmCustomPlugin {
private $stockhandle = 0;
function __construct(& $subject, $config) {
parent::__construct($subject, $config);
$varsToPush = array(
'selectname1'=>array('','char'),'selectname2'=>array('','char'),'selectname3'=>array('','char'),'selectname4'=>array('','char'),
'selectoptions1'=>array('','char'),'selectoptions2'=>array('','char'),'selectoptions3'=>array('','char'),'selectoptions4'=>array('','char')
);
$this->setConfigParameterable('custom_params',$varsToPush);
}
public function plgVmOnAddToCart(&$product){
echo "plgVmOnAddToCart fired";
die();
}
public function plgVmOnUserInvoice(){
echo "plgVmOnUserInvoice fired";
die();
}
}
?>
答案 0 :(得分:3)
好的,我找到了解决方案。问题是班级名称。在joomla 1.5文档中 http://docs.joomla.org/Creating_a_Plugin_for_Joomla_1.5 它提到类名必须遵循以下规则: class plg扩展了JPlugin 但是在任何joomla 2.5文档中都没有提到这一点,因为它可能被认为是“一个已知的规则”。 所以我的解决方案是从
更改类名class plgVmAftercheckout extends vmCustomPlugin {
到
class plgVmCustomAftercheckout extends vmCustomPlugin {
“自定义”,因为该插件属于名为Custom的特定组。所以我们需要提一下组名,以便让这些钩子方法观察事件。