Magento - 当库存达到0时禁用产品

时间:2011-10-25 07:49:58

标签: php magento shopping-cart

我一直在尝试获得一个干净的解决方案,只显示具有可过滤属性的产品,即分层导航过滤器Large只会显示目前库存量大的T恤。

我想在加载productCollection之前对其进行过滤,以保持页面加载速度快(ish) - 我最近的尝试是尝试在其库存达到0时将项目的状态设置为禁用,以便magento的核心过滤将在分层导航结果页面上启动。

我尝试过的所有方法都没有成功将状态设置为禁用 - 我应该可以向CatalogInventory / Model / Stock / Status.php updateStatus()添加一些内容吗?或者某个地方..像:

/**
 * Update product status from stock item
 *
 * @param int $productId
 * @param string $productType
 * @param int $websiteId
 * @return Mage_CatalogInventory_Model_Stock_Status
 */
public function updateStatus($productId, $productType = null, $websiteId = null)
{
    if (is_null($productType)) {
        $productType = $this->getProductType($productId);
    }
    $storeId = Mage::app()->getStore()->getStoreId();
    $item = $this->getStockItemModel()->loadByProduct($productId);

    $status  = self::STATUS_IN_STOCK;
    $qty     = 0;
    if ($item->getId()) {
        $status = $item->getIsInStock();
        $qty    = $item->getQty();
    }

    if($qty < 1)
        Mage::getModel('catalog/product_status')->updateProductStatus($product->getId(), $storeId, Mage_Catalog_Model_Product_Status::STATUS_DISABLED);
    else 
        Mage::getModel('catalog/product_status')->updateProductStatus($product->getId(), $storeId, Mage_Catalog_Model_Product_Status::STATUS_ENABLED);

    $this->_processChildren($productId, $productType, $qty, $status, $item->getStockId(), $websiteId);
    $this->_processParents($productId, $item->getStockId(), $websiteId);

    return $this;
}

我已经好几天了,没有运气。如果有一个更优雅的解决方案我是敞开的

感谢

0 个答案:

没有答案