如果我添加数量为2的产品,那么在购物车中,只有一个产品有2个数量显示。但我想根据数量显示相同产品的单独行。
像购物车一样,应该如下。product name Qty price
ABC 1 $10
ABC 1 $10
最后我得到了解决方案。这是一个答案
打开此文件\ app \ code \ core \ Mage \ Sales \ Model \ Quote.php并搜索" _addCatalogProduct"功能
并替换
$item = $this->getItemByProduct($product);
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;
}
使用评论代码。
// $item = $this->getItemByProduct($product);
//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;
// }
并在\ app \ code \ core \ Mage \ Checkout \ controllers \ CartController.php
替换
$cart->addProduct($product, $params);
到
if($params['qty'] == 0 || $params['qty'] == '')
{
$params['qty'] = 1;
}
$quantity = $params['qty'];
for($loop=1; $loop<=$quantity; $loop++)
{
$params['qty'] = 1;
$cart->addProduct($product, $params);
}
答案 0 :(得分:0)
如果你真的必须这样做,那么你可以尝试为事件sales_order_place_before
创建一个观察者,然后在你的观察者中你可以通过循环遍历并找到多个数量项来修改引用,将数量改回1然后将其余项目作为报价项添加到报价对象中。不确定Magento是否会在下订单期间/之后再次将它们组合在一起。您可以使用事件sales_quote_product_add_after
执行相同的操作,这可能会更好,因为用户将看到购物车页面上的各个行,但同样,不知道Magento是否会在结帐时将数量组合在一起没有实际工作的过程。如果是这样,您可以尝试将产品设置为超级产品并覆盖sku,以便在将其添加到报价之前标记有唯一标识符(例如SKU100-1,SKU100-2等)。
答案 1 :(得分:0)
这个怎么样:
替换此
<?php foreach($this->getItems() as $_item): ?>
<?php echo $this->getItemHtml($_item) ?>
<?php endforeach ?>
在第130行默认主题/app/design/frontend/yourtheme/default/template/checkout/cart.phtml
<?php foreach($this->getItems() as $_item): ?>
<?php $qty = $_item->getQty() ?>
<?php for($i=0; $i < $qty; $i++) : ?>
<?php $_item->setQty(1); ?>
<?php echo $this->getItemHtml($_item); ?>
<?php endfor; ?>
<?php endforeach ?>