このタスクの拡張機能を開発する必要があります。 イベント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は製品に在庫がないことを知らせます。これで十分です。
コード作業をありがとう。私は今日の私のポストの第2部について考えました。基本的に私は1日のサイト(24時間の間、1日または2日の製品)で取引をしています。それが私のサイトにあるすべてです。だから、数多くの製品を持った真のマゼンタの店が好きではない。私は、製品を「Disabled」に設定すると、ショッピングカートにその製品があればショッピングカートもクリアされると思います。私は1ステップのチェックアウト延長を使用していますが、私が見たところでは、トランザクションを処理しようとしたときに製品が在庫切れだったことを通知しませんでした。これはすべてのテストアカウントにあります。 –
私があなたの場合は、カートに入れられた商品が売り切れになったことをお客様に通知する拡張機能に取り組みます。しかし、顧客に知らせることなく、障害のある製品を本当にカートから取り除くかどうかを最初にテストするべきです。 – SebiF