0

是否可以保存产品,但我不希望开始活动。我知道不需要事件,因为我所做的更新不会影响任何事情。例如,我只更新我自己的属性或其他什么。

马吕斯告诉我这件事:

Mage::getSingleton('catalog/product_action')->updateAttributes($productIds, $attributes, $storeId);

太好了,所以你甚至不做保存,但我只是想知道是否有一种方法可以跳过仍然调用 save() 方法的事件(在某些情况下可能会有所帮助)

谢谢, 罗德

4

1 回答 1

0

禁用保存事件可能是一种危险且有害的方法。我不推荐它。
但是,如果您坚持,我认为您可以通过在运行时使用事件更改配置节点来实现这一点。 以下是更改配置节点的方法

您需要做的是,在调用$product->save()从配置中获取所有具有与产品相关事件的节点之前:global/events/catalog_product_save_beforeglobal/events/catalog_product_save_after...可能还有其他节点并将节点插入<type>disabled</type>其中。保存完成后删除type节点。

您可以为这样的事件获取所有(全局)观察者:

Mage::getConfig()->getNode('global/events/catalog_product_save_before');

循环遍历结果并将类型设置为禁用。

这是一个例子。
假设您有事件: some/model_here someAction

你需要这样做:

Mage::getConfig()->setNode("global/events/catalog_product_save_before/observers/some_alias/type", 'disabled');

注:除global区域外,可在frontendadminhtml区域找到活动。

于 2013-11-01T12:50:48.703 回答