Magento:以编程方式创建订单:可配置的产品问题

时间:2014-06-21 06:09:40

标签: magento configuration magento-1.8

我正在尝试以编程方式创建订单。

有可配置的产品具有单个基本属性,即大小。并且一些可配置产品具有多个(多个)相关产品,具有相同大小值。

现在,尝试添加具有特定大小的此类可配置产品。但是magento会分配先遇到的兄弟姐妹/孩子/相关产品!因此,值得SKU / sibling下降以创建订单。

我按照以下链接中的代码:

http://www.blog.plazathemes.com/archives/2149

http://pravams.com/2011/11/11/magento-create-order-programmatically/

有没有办法用特定的SKU添加配置产品? (类似于“addProduct”方法等中可接受的参数)。

2 个答案:

答案 0 :(得分:1)

添加可配置产品以编程方式创建订单/报价时,我遇到类似问题。添加产品时,需要在选项数组中设置super_attribute。该值必须包含区分相关产品的属性(例如:颜色,大小)。所以,它会是这样的:

$buyOptions = array(
    'qty' => 1,
    'super_attribute' => array($attributeId => $attributeValue) //ex: array(131 => 53)
);
$quote->addProduct($product, new Varien_Object($buyOptions));

我不知道您是否想要通过他们的sku选择相关产品,但如果您只想从可配置的产品中选择特定的相关产品,则上述代码将起作用。我相信它本质上是一样的。

ps:我在这里回答这个问题,因为在magento stackexchange中它被标记为重复(我认为是错误的)。

答案 1 :(得分:0)

如果你有孩子的sku,你可以这样做:

$_product = Mage::getModel('catalog/product')->loadByAttribute('sku', 'mysku-123');  

如果您有尺寸:

$childProducts = Mage::getModel('catalog/product_type_configurable')->getUsedProducts(null,$product);
foreach ($childProducts as $child) {
    if ($child->getSize()==$size){
       //add the product to the order
    }
}

然后你循环进入孩子们以找到大小。