定制插件中的Joomla2.5VirtueMart钩子方法不会触发

定制插件中的Joomla2.5VirtueMart钩子方法不会触发,joomla2.5,virtuemart,Joomla2.5,Virtuemart,我成功地创建了这个简单的插件,我需要它在购物车中添加一个项目时触发一个方法,并在发生结帐时触发一个方法。但这些方法无论如何都不会奏效。我在virtuemart中还看到了另一个名为stockable的插件,它使用PLGVMonadToCart,并在那里正确启动。但在我的插件类中,它根本不会启动。 这是我插件中的代码,我能做些什么使它工作?多谢各位 <?php defined('_JEXEC') or die( 'Direct Access to ' . basename( __FILE

我成功地创建了这个简单的插件,我需要它在购物车中添加一个项目时触发一个方法,并在发生结帐时触发一个方法。但这些方法无论如何都不会奏效。我在virtuemart中还看到了另一个名为stockable的插件,它使用PLGVMonadToCart,并在那里正确启动。但在我的插件类中,它根本不会启动。 这是我插件中的代码,我能做些什么使它工作?多谢各位

<?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 {