【问题标题】:Attach simple products to a configurable product programmatically以编程方式将简单产品附加到可配置产品
【发布时间】:2014-06-10 19:56:24
【问题描述】:

我正在尝试以编程方式将一些现有的简单产品加入到现有的可配置产品中。

我几乎没有找到任何关于此的提示/文档。我检查了 MAGMI Magento Mass Importer 插件(特别是 magmi_productimportengine.php-file),但没有成功。

之后我发现了这个sn-p:

function attachProductToConfigurable($childProduct, $configurableProduct)
{
    $loader = Mage::getResourceModel('catalog/product_type_configurable')
                  ->load($configurableProduct, $configurableProduct->getId());

    $ids = $configurableProduct
        ->getTypeInstance()
        ->getUsedProductIds();

    $newids = array();
    foreach ($ids as $id) {
        $newids[$id] = 1;
    }
    $newids[$childProduct->getId()] = 1;

    //$loader->saveProducts( $_configurableProduct->getid(), array_keys( $newids ) );                
    $loader->saveProducts($configurableProduct, array_keys($newids));
}

但是当我尝试像这样调用函数时:

$sProduct = Mage::getModel('catalog/product')
                ->loadByAttribute('sku', $v);
$cProduct = Mage::getModel('catalog/product')
                ->loadByAttribute('sku', $sku);
attachProductToConfigurable($sProduct, $cProduct);

(每个简单的产品 SKU 都会逐步传递到可配置产品)

致命错误:在第 1018 行对 ... 中的非对象调用成员函数 getId()

这是函数本身的这一行

$loader = Mage::getResourceModel('catalog/product_type_configurable')
              ->load($configurableProduct, $configurableProduct
              ->getId());

由于我没有发现任何类似于将简单 SKU 加入现有可配置产品的方法,因此我一直在查找初始化函数调用、资源模型等时可能出现的问题。

我们非常感谢任何关于需要注意什么以实现这一目标的想法。

【问题讨论】:

    标签: php magento join import configurable


    【解决方案1】:

    试试看:

    Mage::getResourceSingleton('catalog/product_type_configurable')
        ->saveProducts($mainConfigrableProduct, $simpleProductIds);
    

    其中$mainConfigrableProduct 必须是可配置产品的实例,$simpleProductIds 是一个数组,其中包含与可配置产品关联的简单产品的 ID。

    附带说明,这样做时要非常小心。简单产品必须与可配置产品在同一属性集中。 Here is what can happen if they are not.

    【讨论】:

    • 嗨,Marius,再次感谢您!以这种方式合并 SKU 确实不会出错。正如你提到的,我现在必须得到属性集。也感谢您指出其中的危险! :-) 一切顺利
    猜你喜欢
    • 1970-01-01
    • 2012-05-18
    • 1970-01-01
    • 1970-01-01
    • 2014-11-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2014-11-19
    相关资源
    最近更新 更多