添加相关产品以引用但不是购物车

时间:2014-10-28 20:52:11

标签: magento cart

我在Magento中创建了一个新的产品类型。但是,我很难将所有相关产品添加到sales_flat_quote_item表中。我只希望将相关产品添加到表格中,并且只在购物车中显示主要的母产品。

我真的很接近实现这个目标。现在,只有父项目在购物车中可见时才会显示。但是,上述表格中只列出了其中一个相关产品。

以下是我的代码片段:

class Namespace_Module_Model_Product_Type_Custom extends Mage_Catalog_Model_Product_Type_Abstract {
........

    protected function _prepareProduct(Varien_Object $buyRequest, $product, $processMode)
{
    $qty = $buyRequest['qty'];
    $associatedQty = $buyRequest['associated_qty'];

    if($qty >= 1) {
        $result = parent::_prepareProduct($buyRequest, $product, $processMode);
        if (is_array($result)) {
            $product = $this->getProduct($product);

            foreach($buyRequest['associated'] as $associated){
                if($associated){
                    $subProducts[] = Mage::getModel('catalog/product')->load($associated);
                }
            }

            foreach($subProducts as $subProduct){
                if($subProduct){
                    $product->setCartQty($qty);
                    $product->addCustomOption('product_qty_'.$subProduct->getId(), $associatedQty[$subProduct->getId()], $subProduct);

                    $product->addCustomOption('associated_product_' . $subProduct->getId(), $associatedQty[$subProduct->getId()]);

                }
            }

                    $_result = $subProduct->getTypeInstance(true)->_prepareProduct(
                        $buyRequest,
                        $subProduct,
                        $processMode
                    );

            if (!isset($_result[0])) {
                return Mage::helper('checkout')->__('Cannot add the item to shopping cart');
            }

            $_result[0]->setParentProductId($product->getId())
                ->addCustomOption('parent_product_id', $product->getId());

            $result[] = $_result[0];
            return $result;

        } else {
            return $this->getSpecifyOptionMessage();
        }
    } else {
        return $this->getQtyMessage();
    }
}

........
}

现在只有相关产品' 53'正在作为儿童产品添加。我仍然想念其他两个。基本上,foreach($subProducts as $subProduct)循环将使用三个关联产品循环3三次。我假设在Magento的某个地方,它只使用最后一个循环产品。

任何建议或帮助都会很棒。提前谢谢!

1 个答案:

答案 0 :(得分:0)

弄清楚了。我只需要将以下内容转移到foreach循环中而不是在它之外。

$_result[0]->setParentProductId($product->getId())
           ->addCustomOption('parent_product_id', $product->getId());

$result[] = $_result[0];