Я создал новый тип продукта в 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)
будет три раза три цикла с тремя связанными продуктами. Я предполагаю, что где-то вдоль линии в Magento он использует только последний зацикленный продукт.
Любые советы или помощь с этим были бы замечательными. Заранее спасибо!