我们最近有一个客户,他需要能够管理Magento中可配置产品的库存。由于可配置产品仅用于将简单产品组合在一起,因此无法在普通Magento安装中实现跟踪可配置产品库存的功能。
我研究了Magento代码库,以更好地了解Magento中不同产品类型的库存管理方式。您可能会猜到,CatalogInventory模块可处理所有Magento’的库存管理。在/app/code/core/Mage/CatalogInventory/etc/config.xml文件的一侧,您可以’ll找到全局标记中包含的xml的以下部分:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<catalog> <product> <type> <simple> <is_qty>1</is_qty> </simple> <virtual> <is_qty>1</is_qty> </virtual> <configurable> <stock_indexer>目录inventory / 在dexer_stock_configurable</stock_indexer> </configurable> <grouped> <stock_indexer>目录inventory / 在dexer_stock_grouped</stock_indexer> </grouped> </type> </product> </catalog> |
xml的此部分由Mage_CatalogInventory_Helper_Data :: getIsQtyTypeIds方法使用,以确定是否为某种产品类型“qualifies”用于库存跟踪。它还用于指示是否需要使用自定义资源模型来计算特定产品类型的库存可用性。
Magento处理配置xml的方式的美丽之处在于,我们可以在自定义模块的config.xml文件中创建与上述xml的结构相对应的xml节点。–这使我们几乎可以更改任何配置值,而无需触摸核心Magento模块的config.xml文件。然后,Magento将合并两个config.xml文件中的xml节点。由于自定义模块是在核心模块之后加载的,因此任何覆盖默认Magento节点的节点都将具有优先权。
我创建了一个小模块,用于对可配置产品进行库存跟踪。该模块将覆盖Magento中的以下部分:
注意:
更新(10/12/5):在开发人员网站上使用此测试模块后,它看起来像$ item->在CLS_ConfigurableInventory_Model_CatalogInventory_Observer类中的第21行上的getProduct()方法调用实际上不是’返回所有订单商品的产品模型。这是我的事’一旦在项目中实际实现了此测试代码,就将进行调试。一世’当我们这样做时,将尝试在此处发布更新。
I’d。希望收到您的任何反馈,最终在您的网站上实现此代码。
13 评论
你有没有做这个工作?我们正在寻找捆绑产品的库存。
不,我们没有’使其适用于捆绑产品。
我可能是瞎子,但是在哪里可以下载您的小模块版本?
Your code helped me 上 the way. You can enable qty tracking for 可配置产品s by overwriting these two lines:
0
1
通过将Composite设置为0,您实际上会说:“this 产品 isn’t a bundled 产品”(实际上,但是Magento会将其视为简单产品)。这将提供更改后端数量的选项’s 产品 page.
订购产品时(如您的文章中所述),需要is_qty = 1减去数量。
更好的是,您可以创建自己的“configurable 产品”类型,这样您就可以将默认的Magento功能与自己的功能分开。
…