このタスクの拡張機能を開発する必要があります。イベント sales_order_save_after のオブザーバーを作成し、数量を確認するだけで十分です。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 は製品の在庫がなくなったことを通知します。これで十分なはずです。