【发布时间】:2012-01-27 19:33:39
【问题描述】:
我正在努力在我的 Magento 主题的(个人)产品页面上显示库存可用性,对此我有些不完全了解。
我看到模板中使用了两种方法来检查产品是否可供销售:
Mage_Catalog_Model_Product::isAvailable()
Mage_Catalog_Model_Product::isSaleable()
我自己的发现:
我看到isSalable()(又被isSaleable() 调用)调用isAvailable(),但也调度了两个事件(catalog_product_is_salable_before 和catalog_product_is_salable_after)。
在前端,我注意到在 Magento 的基本模板中isAvailable() 用于决定是将产品显示为“有货”还是“缺货”; isSaleable() 用于决定是否显示“添加到购物车”按钮。
在后端,我注意到当库存数量变为零并且不允许允许延期交货时,产品的库存可用性会变为“缺货”。 当库存数量变为零并且允许延期交货时,产品的库存可用性保持不变。
问题:
属性“库存可用性”和“库存数量”显然相互关联,并且提到了 PHP 方法。我想知道:
-
PHP 方法
isAvailable()和 语义 的区别是什么?isSaleable()是以及为什么我会使用其中一个; -
我似乎还不知道它们与这些属性的关系以及 Magento 的行为。
谢谢。
编辑:
我已经尝试了产品的库存数量 (-1,0,1)、库存可用性(进/出)和延期交货(开/关)的所有相关组合,结果如下:
为了完整起见:
St.Av 0 = out of stock
St.Av 1 = in stock
BckOrd 0 = no backorders allowed
BckOrd 1 = backorders are allowed
控制所有 PHP 方法的返回值的是 Magento 中的库存可用性开关,但是当缺货订单关闭且库存数量降至 1 以下时,库存可用性将自动重置为“缺货”(因此N/A 行)。
【问题讨论】:
-
漂亮的桌子,帮了我:)