Magento 1.7 -调试可用

nbnkbykc  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(166)

我有一个多商店,遇到了一些奇怪问题:在一个商店中,$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属性。

2mbi3lxu

2mbi3lxu1#

您可以尝试上面提到的解决方案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
    }

相关问题