Magento 1.7 - Debug isAvailable

时间:2013-03-07 10:59:43

标签: magento option product

我有一个多线索,有一些奇怪的问题: 在一个商店中,$ 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)

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

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

为0.这导致了一个问题,即哪个属性负责生成的is_saleable属性。

1 个答案:

答案 0 :(得分:1)

您可以尝试提及here

的解决方案

基本上它涉及在调用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
    }