我希望有人可以帮助我...
目标是将产品分开放入购物车。因此,如果购物车中有2个具有相同ID的产品,则应该单独显示和处理它们,而不是作为带有数量2的产品/项目。
为实现这一目标,我使用了引用项目选项和事件。
事件:checkout_cart_product_add_after 代码:
$quoteItem->addOption(new Varien_Object(
array(
'product' => $quoteItem->getProduct(),
'code' => 'unique_id',
'value' => $uniqueId
)
));
我也尝试使用addional_options:
$additionalOptions = array(
array(
'code' => 'unique_id',
'label' => 'Uniaue ID',
'value' => $uniqueId
)
);
$quoteItem->addOption(
array(
'code' => 'additional_options',
'value' => serialize($additionalOptions),
)
);
之后 - 一切正常。选项显示在购物车中,它们存储在数据库中(sales_flat_quote_item_option),它们都有自己的item-id。
但是,如果我编辑一个产品并将其再次放入购物车 - 附加选项会丢失,它们将不再存在于数据库中...这会影响购物车中具有相同ID的所有产品......
如果有人可以帮助我,那将会很好......
答案 0 :(得分:0)
我遇到了同样的问题并使用了一种完全不同的方法。 我为它创建了一个模块,并在config.xml中添加了以下内容
<global>
<models>
<sales>
<rewrite>
<!-- Model -->
<quote>Companyname_Modulename_Model_Override_Mage_Sales_Model_Quote</quote>
</rewrite>
</sales>
...
并创建:
应用程序/代码/小区/公司名称/ MODULENAME /型号/覆盖/法师/销售/型号/ Quote.php
使用以下代码:(从原始Magento代码稍加编辑)
<?php
class Companyname_Modulename_Model_Override_Mage_Sales_Model_Quote extends Mage_Sales_Model_Quote
{
/**
* Adding catalog product object data to quote
*
* @param Mage_Catalog_Model_Product $product
* @return Mage_Sales_Model_Quote_Item
*/
protected function _addCatalogProduct(Mage_Catalog_Model_Product $product, $qty = 1)
{
$newItem = false;
$item = $this->getItemByProduct($product);
$item = false;
if (!$item) {
$item = Mage::getModel('sales/quote_item');
$item->setQuote($this);
if (Mage::app()->getStore()->isAdmin()) {
$item->setStoreId($this->getStore()->getId());
} else {
$item->setStoreId(Mage::app()->getStore()->getId());
}
$newItem = true;
}
/**
* We can't modify existing child items
*/
if ($item->getId() && $product->getParentProductId()) {
return $item;
}
$item->setOptions($product->getCustomOptions())
->setProduct($product);
// Add only item that is not in quote already (there can be other new or already saved item
if ($newItem) {
$this->addItem($item);
}
return $item;
}
}
通过这种方式,它会强制将每个产品分开添加到购物车中,如果您添加选项以在购物车中为每个产品添加评论,那么这是特别好的,然后人们添加具有不同评论的相同产品。
我希望它可以帮助别人:)