pan*_*ake 50 product magento stock
我正在Magento主题的(个人)产品页面上显示库存可用性,而且我对此并不完全了解.
我看到模板中使用了两种方法来检查产品是否可供销售:
Mage_Catalog_Model_Product::isAvailable()
Mage_Catalog_Model_Product::isSaleable()
Run Code Online (Sandbox Code Playgroud)
我自己的发现:
我看到了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.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行) .
小智 -1
我看到那些有语义差异。如果无库存的商品设置为允许缺货,则该商品仍然可以销售。
据我所知,它看起来像是isAvailable检查产品类型实例,以查看该产品类型是否可以出售(如果确实可用)。
因此,大胆猜测一下您何时会选择其中之一:
如果您正在检查单个产品以查看该产品是否实际上已准备好销售,您应该使用isSalable(),因为它会调用isAvailable()。
要检查产品(您不知道其类型)是否可以出售,并且我想跳过检查产品类型的步骤,您可以调用isAvailable()该产品。
isAvailable()检查产品类型是否可销售。
isSalable()检查产品是否可销售。
isSaleable()是 的别名isSalable()。
| 归档时间: |
|
| 查看次数: |
34130 次 |
| 最近记录: |