【问题标题】:Magento call event after import product导入产品后的 Magento 呼叫事件
【发布时间】:2015-05-26 07:03:25
【问题描述】:

我想知道产品导入操作完成后会触发哪个事件。我想在 Magento 的管理员端完成产品导入后设置一些逻辑。我已经尝试过这个 catalog_product_import_finish_before,但它在我的情况下不起作用,我想在产品导入工作完成后添加我的逻辑。

在 Magento 1.9 中有什么方法可以做到这一点吗?

提前致谢

【问题讨论】:

    标签: magento


    【解决方案1】:

    由于我不确定您是如何导入产品的,所以这里有一种通用的查找方法。

    如果您打开 app/Mage.php,请查找函数 dispatchEvent()。此函数调度 Magento 中的所有事件。如果您在该函数的某处添加日志调用,您可以记录所有被触发的事件,从而找到您需要的事件。

    public static function dispatchEvent($name, array $data = array())
    {
        Varien_Profiler::start('DISPATCH EVENT:'.$name);
        $result = self::app()->dispatchEvent($name, $data);
        Mage::log($name,null,'events.log');
        Varien_Profiler::stop('DISPATCH EVENT:'.$name);
        return $result;
    }
    

    数据将显示在 var/log/events.log 中。确保启用了日志记录。祝你好运!

    【讨论】:

      【解决方案2】:

      如果您想查看系统中的事件列表,请在 app 文件夹中对该术语执行 grep:protected $_eventPrefix。我最接近您的活动的是/app/code/core/Mage/Catalog/Model/Convert/Adapter/Product.php 文件。其中事件前缀定义为:

      protected $_eventPrefix = 'catalog_product_import';
      

      您需要扩展这个类并在其中添加您的调度!另外,我不确定 finish 是否用于 Magento 动态事件。您可能更喜欢使用save_row 代替? This 文章可能对您有所帮助(搜索动态事件)。

      【讨论】:

        【解决方案3】:

        看起来这是ImportExport 模块中调度的唯一事件。因此,如果这个不是为您做的,那么您可以创建您的模块(如果尚未完成)并从 Mage_ImportExport_Adminhtml_ImportController 重写 startAction() 并在该方法中您需要的地方添加您的逻辑。

        这是如何做到的(假设模块是 Mycompany_ImportExport): 在模块的etc/config.xml 配置部分添加以下标签以创建控制器重写:

        <admin>
            <routers>
                <adminhtml>
                    <args>
                        <modules>
                            <Mycompany_ImportExport before="Mage_ImportExport">Mycompany_ImportExport_Adminhtml
                            </Mycompany_ImportExport>
                        </modules>
                    </args>
                </adminhtml>
            </routers>
        </admin>
        

        然后创建文件夹Mycompany/ImportExport/controllers/Adminhtml并创建一个文件ImportController.php

        最后加上:

        require_once 'Mage/ImportExport/controllers/Adminhtml/ImportController.php';
        
        class Mycompany_ImportExport_Adminhtml_ImportController extends Mage_ImportExport_Adminhtml_ImportController
        {
            public function startAction()
            {
                // duplicate code from original and add logic here
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-10-28
          相关资源
          最近更新 更多