0

我有一个多商店有一些奇怪的问题:在一个商店 $product->isAvailable() 在某些产品上返回 true,但在另一家商店 $product->isAvailable() 总是返回 null。

在这个函数中 isAvailable()

$this->getTypeInstance(true)->isSalable($this)

Mage::helper('catalog/product')->getSkipSaleableCheck();

两者都返回 null。两种产品具有相同的属性,并且两个商店都使用与库存可用性有关的一般商店配置。

在升级之前,我使用了 v.1.4.0.2,我想 isAvailable()/isSaleable() 的逻辑发生了一些变化。我不明白这两种产品的区别,这是一种产品不可用的原因。

//编辑 :

经过一些调试,我发现该方法

isSalable($product = null)

isAvailable() 中的 $this->getTypeInstance(true)->isSalable($this) 调用返回 0,因为

$this->getProduct($product)->getData('is_salable')

是 0。这导致了哪些属性负责这个生成的 is_saleable 属性的问题。

4

1 回答 1

1

您可以尝试这里提到的解决方案

本质上,它涉及在调用 isSaleable() 或 isAvailable() 之前切换到默认存储。

$originalStore = Mage::app()->getStore(); // save the original store setting
        Mage::app()->setCurrentStore('default'); //switch to the default store
        $productsCollection = Mage::getModel('catalog/product')->getCollection();
        foreach ($productsCollection as $product) {
            if (!$product->isSalable()) {
                // Do what you gotta do
            }
        }
        Mage::app()->setCurrentStore($originalStore->getId()); // switch back to the original
    }
于 2013-11-14T15:07:04.637 回答