定制插件中的Joomla2.5VirtueMart钩子方法不会触发
我成功地创建了这个简单的插件,我需要它在购物车中添加一个项目时触发一个方法,并在发生结帐时触发一个方法。但这些方法无论如何都不会奏效。我在virtuemart中还看到了另一个名为stockable的插件,它使用PLGVMonadToCart,并在那里正确启动。但在我的插件类中,它根本不会启动。 这是我插件中的代码,我能做些什么使它工作?多谢各位定制插件中的Joomla2.5VirtueMart钩子方法不会触发,joomla2.5,virtuemart,Joomla2.5,Virtuemart,我成功地创建了这个简单的插件,我需要它在购物车中添加一个项目时触发一个方法,并在发生结帐时触发一个方法。但这些方法无论如何都不会奏效。我在virtuemart中还看到了另一个名为stockable的插件,它使用PLGVMonadToCart,并在那里正确启动。但在我的插件类中,它根本不会启动。 这是我插件中的代码,我能做些什么使它工作?多谢各位 <?php defined('_JEXEC') or die( 'Direct Access to ' . basename( __FILE
<?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();
}
}
?>
好的,我找到了解决方案。问题是类名。在joomla 1.5文档中 它提到类名必须遵循以下规则: 类plg扩展了JPlugin 但这在任何joomla 2.5文档中都没有提到,因为它可能被认为是“一条已知的规则”。 所以我的解决方案是将类名从
class plgVmAftercheckout extends vmCustomPlugin {
到
“自定义”,因为插件属于一个名为“自定义”的特定组。因此,我们需要提到组名,以便让这些钩子方法观察事件
class plgVmCustomAftercheckout extends vmCustomPlugin {