【问题标题】:Magento: Add a "fake" product to cart/quoteMagento:将“假”产品添加到购物车/报价单
【发布时间】:2011-05-02 01:16:12
【问题描述】:

我了解如何以编程方式创建产品并添加到购物车。我知道这听起来可能很愚蠢,但是否可以即时生成产品并将其添加到购物车/报价中,但从未真正将其保存在数据库中。

我们想创建一个定制界面,我想最后它可以添加一个包含所有选择的捆绑产品,但该捆绑产品实际上不会存在于后端。

我想只要你能确保报价和订单符合产品的需求就可以了,但显然有很多与在特定数据库中查找内容有关sku 或 ID。我知道,如果您删除一个产品,然后在管理员中查看导致问题的订单,至少对于我正在处理的这种情况是这样。

我正在考虑创建一个巨大的捆绑产品,其中包含 6 种不同的捆绑商品,每个商品可能有 500 种产品,然后根据用户的选择,我以编程方式将捆绑商品添加到购物车。但后来我不确定拥有这样一个巨大的捆绑产品是否也会产生负面影响。

更新: 我不认为这会起作用,显然数据库中有很多与产品相关的信息,我们设置了一个测试,然后我们立即得到 $item->getProduct() 的错误。我们正在推进创建一个巨大的捆绑产品以及通过动态添加自定义选项的通用产品,Anda 在下面指出。任何其他建议将不胜感激。

【问题讨论】:

    标签: magento


    【解决方案1】:

    我不确定clockworkgeek 的方法是否有效。在每次页面加载时,Magento 都会从购物车中加载商品以确保它们仍然有效(有货、价格正确等),并修改购物车以反映这些值。我过去对系统的理解是,购物车中的产品需要有对应的数据库值才能在这个过程中存活下来。

    “巨型捆绑产品”方法很痛苦,但在过去是我发现的最佳方法。尝试更改产品的值(例如价格或属性)将被购物车检查覆盖,因此您需要具有最大灵活性的产品,例如过度定制的捆绑产品或可配置产品。

    希望有帮助!

    谢谢, 乔

    【讨论】:

    • 您可以使用 setCustomPrice()(Mage_Sales_Model_Quote_Item_Abstract::setCustomPrice()) 动态更改添加到购物车的产品价格。
    • 谢谢 Joseph,我以为所有这些库存和价格检查都已经完成了,只是还没有真正深入研究过,我想我们会选择捆绑产品选项
    【解决方案2】:

    为什么不在 db 中创建通用产品,然后根据用户选择将产品自定义设置为自定义选项 (additional_options)。您可以将自定义选项添加到产品(实际上是报价项),而无需将它们保存在数据库中。我曾经为一个销售处方眼镜的网站做过这个。处方是作为选项添加的。

    【讨论】:

    • 谢谢安达,我想我以前从你的投资组合中查看过你的眼镜网站。我将采用您的方法,看看与捆绑产品一相比会发生什么。我不妨尝试一切,这样我们就知道将来会发生什么。
    【解决方案3】:

    您可以以编程方式创建Mage_Sales_Model_Quote_Items 并将它们添加到购物车。您已经注意到它需要一个产品来匹配它的产品 ID,但它不一定是有用的。它可能是一个空白的、被禁用的产品,也是用代码创建的。所需要的只是一个存根。
    购物车所需的东西存储在报价项目中 - 名称、价值和数量等字段。然后将这些字段直接复制到订单中,而不使用产品。

    【讨论】:

    • 我要试试那个时钟。
    【解决方案4】:
    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) )

    【讨论】:

      猜你喜欢
      • 2012-04-01
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2017-05-18
      • 2012-01-11
      • 1970-01-01
      • 2014-12-17
      相关资源
      最近更新 更多