您需要爲此任務開發擴展。 爲事件sales_order_save_after創建一個Observer並檢查數量就足夠了。如果它爲0,則可以禁用您的產品。
那麼,我會告訴你如何。創建以下文件並清除緩存以使其工作(代碼未經測試,但應起作用)。
/app/code/local/Sebi/DeactivateOnOutOfStock/etc/config.xml
<?xml version="1.0"?>
<config>
<modules>
<Sebi_DeactivateOnOutOfStock>
<version>0.1.0</version>
</Sebi_DeactivateOnOutOfStock>
</modules>
<frontend>
<events>
<sales_order_save_after>
<observers>
<deactivateonoutofstock>
<type>singleton</type>
<class>Sebi_DeactivateOnOutOfStock_Model_Observer</class>
<method>salesOrderSaveAfter</method>
</deactivateonoutofstock>
</observers>
</sales_order_save_after>
</events>
<routers>
<Sebi_DeactivateOnOutOfStock>
<use>standard</use>
<args>
<module>Sebi_DeactivateOnOutOfStock</module>
<frontName>DeactivateOnOutOfStock</frontName>
</args>
</Sebi_DeactivateOnOutOfStock>
</routers>
</frontend>
</config>
/app/code/local/Sebi/DeactivateOnOutOfStock/Model/Observer.php
<?php
class Sebi_DeactivateOnOutOfStock_Model_Observer
{
public function salesOrderSaveAfter($observer)
{
$storeId = 0; //the admin store view, change this if you want to disable only for the store view from which the order came
$order= $observer->getEvent()->getOrder();
foreach ($order->getItemsCollection() as $item) {
$stockQty = (int)Mage::getModel('cataloginventory/stock_item')->loadByProduct($item->getProductId())->getQty();
if ($stockQty == 0) {
Mage::getModel('catalog/product_status')->updateProductStatus($item->getProductId(), $storeId, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
}
}
}
}
/app/etc/modules/Sebi_DeactivateOnOutOfStock.xml
<?xml version="1.0"?>
<config>
<modules>
<Sebi_DeactivateOnOutOfStock>
<active>true</active>
<codePool>local</codePool>
</Sebi_DeactivateOnOutOfStock>
</modules>
</config>
祝你好運!不要忘記刷新你的緩存!
編輯:現在看到您的編輯。售完時,我不會刪除客戶手推車上的物品,因爲他們會想到一個錯誤,並嘗試在您的商店中找到它。但他們不能。這將是非常令人沮喪的。如果他們試圖訂購,並且產品在訂購時已經售罄,Magento會通知他們,該產品已經沒有庫存了。這必須足夠。
感謝代碼工作。我今天想到了我的帖子的第二部分。基本上我每天都在做一筆交易(每天1或2件產品,24小時)。這就是我所有的網站。所以它不像一個擁有大量產品的真正的magento商店。如果購物車中有任何產品,我相信將產品設置爲「禁用」也會清除購物車。我使用的是一步式結賬擴展,從我看到的情況來看,當我嘗試處理交易時,它並未通知我產品缺貨。這些都是在 –
的測試賬戶上。如果我是你,我會開展一項擴展工作,通知顧客,他購物車中的產品現在已經售罄並且已被移除。但是,如果在沒有告知客戶的情況下確實從您的購物車中刪除了禁用的產品,您還應該先測試。 – SebiF