如何使用关联产品创建可配置产品?

时间:2013-02-19 03:25:50

标签: magento

以下代码确实创建了可配置产品,但是,当我在后端打开产品时,会显示以下消息:

选择可配置属性 “只有范围为”全局“的属性,输入类型”下拉列表“和”用于创建可配置产品“是”可用“。 将显示一个复选框(“颜色组”),必须在继续之前选择该复选框。

当我点击“继续”时,所有产品数据都会出现在预期的关联产品之外。

//Mage Product
$mpr = Mage::getModel('catalog/product');
$mpr
    ->setTypeId(Mage_Catalog_Model_Product_Type::TYPE_CONFIGURABLE)
    ->setTaxClassId(5)
    ->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)
    ->setStatus(Mage_Catalog_Model_Product_Status::STATUS_ENABLED)
    ->setWebsiteIds(array(1))
    ->setAttributeSetId(4) // You can determine this another way if you need to.
    ->setSku("C12345")
    ->setName("C12345")
    ->setQty(25)
    ->setShortDescription('short description')
    ->setDescription('description')
    ->setPrice(1)
    ->setStockData(array(
        'use_config_manage_stock' => 1,
        'is_in_stock' => 1,
        'is_salable' => 1,
    ));

    $productData = array(
         '7039604' =>
            array('0' => array('attribute_id' => '85', 'label' => 'ROYAL','value_index' => '28563', 'is_percent' => 0, 'pricing_value' => '')
                 ,'1' => array('attribute_id' => '192', 'label' => '14', 'value_index' => '28728', 'is_percent' => 0, 'pricing_value' => '')
            )
    );
    $attributeData = array(
        '0' => array(
            'id' => NULL
            ,'label' => 'Color'
            ,'position' => NULL
            ,'values' => array(
                '0' => array('value_index' => 28563, 'label' => 'ROYAL', 'is_percent' => 0, 'pricing_value' => '0', 'attribute_id' => '85')
            )
            ,'attribute_id' => 85
            ,'attribute_code' => 'color'
            ,'frontend_label' => 'Color'
            ,'html_id' => 'config_super_product__attribute_0')
        ,'1' => array(
            'id' => NULL
            ,'label' => 'Rivers Size'
            ,'position' => NULL
            ,'values' => array(
                '0' => array('value_index' => 28728, 'label' => '14', 'is_percent' => 0, 'pricing_value' => '0', 'attribute_id' => '192')
            )
            ,'attribute_id' => 192
            ,'attribute_code' => 'rivers_size'
            ,'frontend_label' => 'Rivers Size'
            ,'html_id' => 'config_super_product__attribute_1')
    );
$mpr->setConfigurableProductsData($productData);
$mpr->setConfigurableAttributesData($attributeData);
$mpr->setCanSaveConfigurableAttributes(true);
$mpr->save();

2 个答案:

答案 0 :(得分:2)

在$ mpr-> save();

之前添加此代码
$SKU = "any-simple product sku enter here";
$productid = Mage::getModel('catalog/product')
                  ->getIdBySku(trim($SKU));
$mpr->assignProduct($productid);

在$ SKU变量中设置简单的产品sku。并且我检查了当我选择全局变量然后在配置产品中看到相关产品后。

工作正常!!!

答案 1 :(得分:0)

如果您被重定向到select attribute页面,这意味着您在此示例中设置的属性数据未正确保存。
尝试在脚本运行后查看catalog_product_super_attribute(应添加新行)。