我正在尝试以编程方式创建订单。
有可配置的产品具有单个基本属性,即大小。并且一些可配置产品具有多个(多个)相关产品,具有相同大小值。
现在,尝试添加具有特定大小的此类可配置产品。但是magento会分配先遇到的兄弟姐妹/孩子/相关产品!因此,值得SKU / sibling下降以创建订单。
我按照以下链接中的代码:
http://www.blog.plazathemes.com/archives/2149
http://pravams.com/2011/11/11/magento-create-order-programmatically/
有没有办法用特定的SKU添加配置产品? (类似于“addProduct”方法等中可接受的参数)。
答案 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
}
}
然后你循环进入孩子们以找到大小。