Magento - 无法刷新产品页面上的产品库存状态

时间:2012-02-16 21:20:05

标签: magento product stock

我们的一家供应商拥有实时库存系统,我们希望将其实施到我们的网站中。当用户点击产品时,应检查库存并根据需要进行更新。这工作正常。问题是产品切换到库存/库存时。它在后端正确更新,但我无法添加/删除addtocart按钮。这是我更新股票的代码:

//$_stockQTY is the realtime inventory result

$stockData = Mage::getModel('cataloginventory/stock_item');
$stockData->loadByProduct($_product->getId());
$stockData->setData('qty', $_stockQTY);                    
$stockData->setData('is_in_stock',($_stockQTY > 0) ? 1 : 0); 
 if ($stockData->dataHasChangedFor('qty')) {
    $stockData->save();
    $_product = Mage::getModel('catalog/product')->load($_product->getId());
}

正如您所看到的,当数量发生变化时,我强制重新加载产品。这似乎适用于除addtocart按钮之外的所有内容。它显示了之前的结果(重新加载前库存或缺货。)

我有两个问题:

除了重新分配产品之外,是否有更好的方法来重新加载产品:

$_product = Mage::getModel('catalog/product')->load($_product->getId());

为什么一切都在正确更新,但使用相同的

的addtocart

$_product->isSaleable()

称我们的可用性等使用。

比较:

<?php if($_product->isSaleable()): ?>
                <p class="availability in-stock"><img src="<?php echo $this->getSkinUrl('images/stock.png') ?>"> <span><?php echo $this->__('In stock') ?></span>
...
?>

<?php if($_product->isSaleable()): ?>
                        <?php echo $this->getChildHtml('addtocart') ?>
<?php endif; ?>
<?php echo $this->getChildHtml('alert_urls') ?> //Only Shows up if addtocart does not.

刷新页面将正确更新产品,但进行元刷新或其他任何类型都是不可能的。我感谢任何可以提出的建议,因为我希望得到解决并继续下一个任务。

1 个答案:

答案 0 :(得分:0)

除非我误解你的问题,否则你身边的荆棘似乎是股票状态指数。

试试这个:

Mage::getSingleton('cataloginventory/stock_status')->updateStatus($_product->getId());

(我没有对此进行过测试,但它看起来应该有效)