我在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的某个地方,它只使用最后一个循环产品。
任何建议或帮助都会很棒。提前谢谢!
答案 0 :(得分:0)
弄清楚了。我只需要将以下内容转移到foreach循环中而不是在它之外。
$_result[0]->setParentProductId($product->getId())
->addCustomOption('parent_product_id', $product->getId());
$result[] = $_result[0];