我了解如何以编程方式创建产品并添加到购物车。我知道这可能听起来很愚蠢但是可以动态生成产品并将其添加到购物车/报价但从未实际保存在数据库中。
我们想要创建一个定制的界面,我想最后它可以添加包含所有选择的捆绑产品,但该捆绑产品实际上不会存在于后端。
我想,只要你能确保报价和订单在产品方面具有所需要的东西就可以了,但显然可能有很多与在特定数据库中查找内容有关sku或ID。我知道如果你删除了一个产品,然后查看导致问题的管理员的订单,至少它是针对我正在处理的这个场景。
我正在考虑创建一个包含6个不同捆绑项目的巨型捆绑产品,每个项目可能有500个产品,然后根据用户选择的内容我以编程方式将捆绑包添加到购物车。但后来我不确定是否会对像这样的巨型捆绑产品产生负面影响。
更新 我认为这不会起作用,显然有很多信息与数据库中的产品相关联,我们设置了一个测试,立即得到$ item-> getProduct()的错误。我们正在推进创建一个巨大的捆绑产品以及通用产品,即时添加自定义选项,Anda在下面指出。任何其他建议将不胜感激。
答案 0 :(得分:3)
我不确定clockworkgeek的方法是否有效。在每次加载页面时,Magento都会从购物车中加载商品以确保它们仍然有效(库存,价格正确等),并修改购物车以反映这些价值。我过去对系统的理解是,购物车中的产品需要具有相应的数据库值才能在此过程中存活。
“巨型捆绑产品”方法很痛苦,但过去一直是我发现的最佳方法。尝试更改产品的价值(例如价格或属性)将被购物车检查覆盖,因此您需要具有最大灵活性的产品,例如过度定制的捆绑产品或可配置产品。
希望有所帮助!
谢谢, 乔
答案 1 :(得分:3)
为什么不在db中创建通用产品,然后根据用户选择将产品自定义设置为自定义选项(additional_options)。您可以向产品添加自定义选项(实际上是引用项目),而无需将它们保存在数据库中。我曾经为一个销售处方眼镜的网站做过一次。处方药作为一种选择添加。
答案 2 :(得分:2)
您可以通过编程方式创建Mage_Sales_Model_Quote_Item
并将其添加到购物车。您已经注意到它需要一个产品来匹配它的产品ID,但它不一定是有用的。它可能是一个空白的,禁用的产品,也是在代码中创建的。所需要的就是存根
购物车的必要内容存储在报价项目中 - 名称,价值和数量等字段。然后将这些字段直接复制到订单而不使用产品。
答案 3 :(得分:0)
Mage::getModel('catalog/product')
创建一个新产品。您可以通过以下方式将其添加到购物车:
$cart = Mage::getSingleton('checkout/cart');
$product = Mage::getModel('catalog/product')
->setStoreId($storeid)
->setTypeId($type_id)
->setQty($quantyty)
->setWhatAttributYouWant($attribute);
$cart->addProduct($product);
您可以在数据库中找到像catalog_product _...一样的表中的产品属性,或者获取已经创建的产品,并查看它在_data数组中的属性(使用调试器或只是print_r($ product-> getData) ))