我正在我的 Magento 主题的(单个)产品页面上显示库存可用性,但有些事情我并不完全理解。
我看到模板中使用了两种方法来检查产品是否可供销售:
Mage_Catalog_Model_Product::isAvailable()
Mage_Catalog_Model_Product::isSaleable()
我自己的发现:
我看到isSalable()
(反过来又被称为isSaleable()
) calls isAvailable()
而且还调度两个事件(catalog_product_is_salable_before
and catalog_product_is_salable_after
).
在前端,我注意到在 Magento 的基本模板中isAvailable()
用于决定是否将产品显示为“有货”或“缺货”;isSaleable()
用于决定是否显示“添加到购物车”按钮等。
在后端,我注意到当库存数量变为零并且缺货时not如果允许,产品的库存状况将变为“缺货”。
当库存数量变为零且缺货时are允许的情况下,产品的库存量保持不变。
问题:
“库存可用性”和“库存数量”属性显然彼此之间以及所提到的 PHP 方法之间存在联系。我想知道:
谢谢。
EDIT:
我已经尝试了产品的库存数量(-1,0,1)、库存可用性(进/出)和延期交货(开/关)的所有相关组合,结果如下:
St.Qu BckOrd St.Av isSalable() isSaleable() isAvailable()
-1 0 0 0 0 0
-1 0 1 N/A N/A N/A
-1 1 0 0 0 0
-1 1 1 1 1 1
0 0 0 0 0 0
0 0 1 N/A N/A N/A
0 1 0 0 0 0
0 1 1 1 1 1
1 0 0 0 0 0
1 0 1 1 1 1
1 1 0 0 0 0
1 1 1 1 1 1
只是为了完整性:
St.Av 0 = out of stock
St.Av 1 = in stock
BckOrd 0 = no backorders allowed
BckOrd 1 = backorders are allowed
Magento 中的库存可用性开关控制着所有 PHP 方法的返回值,但是当缺货关闭且库存数量低于 1 时,库存可用性将自动重置为“缺货”(因此N/A
rows).