1

嗨,我想写一个钩子。我创建了一个名为 BEST SELLER 的类别和一个名为 BESTSELLER(YES/NO) 的属性(默认为 NO)(一般情况下)。当我将 BEST SELLER 类别分配给任何产品时,我想写一个钩子,它必须将属性 BESTSELLER 更改为 YES,当我们从 BEST SELLER 类别中删除产品时,它必须将 BESTSELLER 属性值更改为 NO。但我发现在 magento v-1.7.0.2 中不存在像 catalog_product_save_before 和 catalog_product_save_after 这样的事件。任何帮助请快速回复。

4

1 回答 1

12

简答

catalog_product_save_before并且catalog_product_save_after可用并且您不会直接找到它。

长答案

如果您尝试在核心文件中进行搜索,那么您将找不到它。因为 Magento 对所有模型save_beforesave_after. 查看文件Mage_Core_Model_Abstract,您会发现以下行:

Mage::dispatchEvent($this->_eventPrefix.'_save_before', $this->_getEventData());
Mage::dispatchEvent($this->_eventPrefix.'_save_after', $this->_getEventData());

现在查看Mage_Catalog_Model_Product文件。您将找到带有值的受保护方法 eventPrefixcatalog_product

protected $_eventPrefix      = 'catalog_product';

因此,对于$this->_eventPrefixCatalog Product 将在 Model 的 dispatch 事件中。catalog_product_save_beforecatalog_product_save_after

这适用于所有正在扩展的模型保存操作Mage_Core_Model_Abstract

于 2013-02-25T09:49:09.973 回答