自定义插件中的Joomla 2.5 Virtuemart挂钩方法不会触发

时间:2012-10-12 16:22:41

标签: joomla2.5 virtuemart

我设法创建了这个简单的插件,我需要它来在项目添加到购物车时触发方法,以及在结帐时发生的方法。但无论如何,这些方法都不会开火。我还在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();
    }


}

?>

1 个答案:

答案 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的特定组。所以我们需要提一下组名,以便让这些钩子方法观察事件。