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