2014-04-25 10 views
7

Sto cercando di unire alcuni prodotti esistenti esistenti a livello di codice a un prodotto configurabile esistente.Collegare prodotti semplici a un prodotto configurabile a livello di programmazione

Non ho trovato alcun suggerimento/documentazione su questo. Ho esaminato il MAGMI Magento Mass Importer Plugin (in particolare il file magmi_productimportengine.php) senza successo.

Dopo che ho trovato questo frammento:

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)); 
} 

Ma quando sto cercando di chiamare la funzione come questa:

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

(ogni prodotto semplice SKU viene passato passo dopo passo per il configurabile prodotto)

Fatal error: Call to a member function getId() on a non-object in ... on line 1018

che questa linea dalla funzione stessa

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

Dato che io non trovo nulla di simile di entrare SKU semplici per un prodotto configurabile esistente, mi sono bloccato guardando a ciò che potrebbe essere sbagliato durante l'inizializzazione delle chiamate di funzione, modelli di risorse ecc ..

Tutte le idee su cosa tenere d'occhio per ottenere questo risultato è molto apprezzato.

risposta

21

dare una prova:

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

Dove $mainConfigrableProduct deve essere un'istanza del prodotto configurabile, e $simpleProductIds è un array con gli ID dei semplici prodotti associati ai prodotti configurabili.

Su una nota a fianco, fare molta attenzione quando si esegue questa operazione. I prodotti semplici devono essere nello stesso attributo impostato come prodotti configurabili. Here is what can happen if they are not.

+0

Ciao Marius, grazie ancora! L'unione di SKU in questo modo funziona senza errori. Come hai detto, devo ottenere gli attributi in questo momento. Grazie anche a me per sottolineare il pericolo in questo! :-) Ti auguro il meglio –