【问题标题】:Magento - Unable to Refresh Product Stock Status on the Product PageMagento - 无法在产品页面上刷新产品库存状态
【发布时间】:2012-03-08 07:41:36
【问题描述】:

我们的一个供应商有一个实时库存系统,我们希望将它应用到我们的网站中。当一个人点击产品时,它应该检查库存并根据需要进行更新。这充其量可以正常工作。问题是当产品切换到有货/无货时。它在后端正确更新,但我无法添加/删除 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.

刷新页面将正确更新产品,但进行元刷新或任何类似的操作都是不可能的。感谢您提供的任何建议,因为我想解决这个问题并继续下一个任务。

【问题讨论】:

    标签: magento product stock


    【解决方案1】:

    除非我误解了你的问题,否则你的眼中钉似乎是股票状态指数。

    试试这个:

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

    (我还没有测试过,但它看起来应该可以工作)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多