2

我设法创建了这个简单的插件,我需要它在将商品添加到购物车时触发一个方法,并在结帐发生时触发一个方法。但是这些方法无论如何都不会触发。我还看到了另一个名为 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();
    }


}

?>
4

1 回答 1

3

好的,我找到了解决方案。问题是类名。在 joomla 1.5 文档 http://docs.joomla.org/Creating_a_Plugin_for_Joomla_1.5 中,它提到类名必须遵循此规则:class plg extends JPlugin 但是在任何 joomla 2.5 文档中都没有提到,因为它可能被认为是“一个已知的规则”。所以我的解决方案是将类名从

class plgVmAftercheckout extends vmCustomPlugin { 

class plgVmCustomAftercheckout extends vmCustomPlugin {

“自定义”,因为插件属于称为自定义的特定组。所以我们需要提到组名,以便让那些钩子方法观察事件。

于 2012-10-12T18:33:48.420 回答