导入产品

时间:2015-05-26 07:03:25

标签: magento

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

Magento 1.9中有没有办法做到这一点?

提前致谢

3 个答案:

答案 0 :(得分: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中。确保已启用日志记录。祝你好运!

答案 1 :(得分:0)

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

以下是如何做到这一点(假设模块是Mycompany_ImportExport): 在您的模块etc/config.xml中,在config部分添加以下标记以创建控制器重写:

<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
    }
}

答案 2 :(得分:0)

如果您想查看系统中的事件列表,请在 app 文件夹中为此术语执行grep:<div ng-repeat="dyn in dynamics"> <your-tag dynamic_element="{dyn}"></your-tag> </div> 。我能接近您的活动的是protected $_eventPrefix文件。其中事件前缀定义为:

/app/code/core/Mage/Catalog/Model/Convert/Adapter/Product.php

您需要扩展此课程并在其中添加您的发送!另外,我不确定Magento动态事件中是否使用protected $_eventPrefix = 'catalog_product_import'; 。您可能更愿意使用finish代替? This文章可能对您有所帮助(搜索动态事件)。