首页 文章

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

提问于
浏览
0

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

存在具有单个基本属性(即大小)的可配置产品 . 并且一些可配置产品具有多个(多于一个)具有 same size 值的关联产品 .

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

我按照以下链接的代码:

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

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

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

2 回答

  • 0

    添加可配置产品以编程方式创建订单/报价时,我遇到类似问题 . 添加产品时,需要在选项数组中设置 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

    如果您有孩子的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
        }
    }
    

    然后你循环在孩子们找到大小 .

相关问题