2

我已成功导入可配置产品(及其相关产品)。当我在后端打开可配置产品时,我会在最后一个选项卡中看到相关产品。但它们不会显示在前端。

这是因为字段has_optionsrequired_options为零。entity_id 2 的产品已在后端手动创建,并且运行良好。

Magento的catalog_product_entity表

当我在后端打开导入的产品时,什么都不做并保存 - 两个值都变为 1。导入中缺少什么将这些字段直接设置为 1?

我试过这个:

 $configurableProduct->setHasOptions(TRUE);

但这没有效果。

4

2 回答 2

3

在尝试了几个小时的不同解决方案后,我求助于管理区域内可配置的保存过程,这使我转向了以下方法;

Mage_Catalog_Model_Product_Type_Configurable::save

然后我发现,以编程方式保存可配置的 getConfigurableAttributesData 和 getConfigurableProductsData 时为空。这导致我创建了一个自定义 shell 脚本,我在其中加载了一组可配置产品,循环并重新保存了数据;

foreach($_collectionConfigurables as $_configurableProduct){

    // flag to be saved
    $_configurableProduct->setCanSaveConfigurableAttributes(1);

    // get the configurable attributes
    $_configurableAttributes = $_configurableProduct->getTypeInstance()->getConfigurableAttributesAsArray();
    $_configurableProduct->setConfigurableAttributesData($_configurableAttributes);

    // Build a collection of configurable children
    $_collectionChildren = $_configurableProduct->getTypeInstance()->getUsedProducts();

    // loop the children and save configurable attributes into an array
    $arr = array();
    foreach($_collectionChildren as $_childProduct){
        foreach($_configurableAttributes as $_attr){
            $arr[$_childProduct->getId()][] = array(
                'attribute_id' => $_attr['attribute_id'],
                'label' => $_childProduct->getAttributeText($_attr['attribute_code']),
                'value_index' => $_childProduct->getData($_attr['attribute_code'])
            );
        }
    }

    $_configurableProduct->setConfigurableProductsData($arr);
    $_configurableProduct->save();
    echo "{$_configurableProduct->getId()}\n";

}

请注意,这已在 CE 1.9.2.1 上进行了尝试和测试

于 2015-10-14T16:23:45.673 回答
1

我现在用的是Magmi ……我自己进口产品好像没那么容易。

于 2012-09-06T13:59:17.647 回答