我们的一家供应商拥有实时库存系统,我们希望将其实施到我们的网站中。当用户点击产品时,应检查库存并根据需要进行更新。这工作正常。问题是产品切换到库存/库存时。它在后端正确更新,但我无法添加/删除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.
刷新页面将正确更新产品,但进行元刷新或其他任何类型都是不可能的。我感谢任何可以提出的建议,因为我希望得到解决并继续下一个任务。
答案 0 :(得分:0)
除非我误解你的问题,否则你身边的荆棘似乎是股票状态指数。
试试这个:
Mage::getSingleton('cataloginventory/stock_status')->updateStatus($_product->getId());
(我没有对此进行过测试,但它看起来应该有效)