我試圖在自定義模塊中實現一個簡單的觀察者來更新產品庫存,當它被加載。MAgento自定義事件觀察員更新股票
這是XML文件的內容:
<?xml version="1.0"?>
<config>
<modules>
<Foo_Bar>
<version>0.1</version>
</Foo_Bar>
</modules>
<global>
<models>
<updatestock>
<class>Foo_Bar_Model</class>
</updatestock>
</models>
<events>
<catalog_product_load_before>
<observers>
<Foo_Bar>
<type>model</type>
<class>updatestock/observer</class>
<method>updatestock</method>
</Foo_Bar>
</observers>
</catalog_product_load_before>
</events>
</global>
</config>
這裏是觀測模型的內容:
class Foo_Bar_Model_Observer extends Mage_Core_Model_Abstract {
public function updatestock($observer) {
$product = $observer->getProduct();
$product->setQty(555);
$product->save();
}
}
的問題是,該股票不會被保存;什麼可以解決這個問題?
感謝您的幫助。
編輯:
我認爲問題來自:
<catalog_product_load_before>
該產品還沒有被加載,我得到一個404頁面未找到,但是當我將其替換爲:
<catalog_product_load_after>
產品庫存已正確更新,但產品庫存情況爲「缺貨」且庫存爲0;前端的「可用性」始終「缺貨」,並且「添加到購物車按鈕」被隱藏(這意味着已加載的庫存爲0)。
我嘗試過使用「<catalog_product_load_before>
」,但在這種情況下我無法獲得產品ID和SKU。
感謝您的幫助
其實我覺得你甚至可以通過在整個$產品,而不是$的productId ,都應該工作。 – mpaepper
感謝您的幫助,請參閱我的編輯更新。 – Bizboss
@Bizboss我編輯了我的答案,迴應你的編輯。這段代碼現在應該可以在你的觀察者中正常工作。它會在產品加載之前更改庫存數量,因此之後產品應該顯示想要的行爲。 – mpaepper