2013-06-13 5 views
6

Voglio cambiare il set di attributi di Magento. Ho cercato e tutti hanno suggerito di eliminare il prodotto e reimportarlo con il nuovo set di attributi.Modifica il set di attributi del prodotto Magento.

Ho fatto lo stesso, ma dopo aver importato i dati non sono riuscito a vedere le recensioni dei prodotti e il post sul blog associato con il prodotto.

Qualcuno può dirmi che è possibile ottenere recensioni sui prodotti e post sul blog associato dopo aver reimportato il prodotto con il nuovo set di attributi.

risposta

1

Una volta eliminato il prodotto non è possibile ottenere la revisione precedente.

Non è necessario eliminare il prodotto. È possibile modificare l'attributo impostato modificando e utilizzando. altro saggio creare un nuovo set di attributi e creare un nuovo prodotto.

0

Io uso this extension per modificare set di attributi.

Avevo l'estensione che hai consigliato sopra, ed è bello. Ma il primo ha più funzioni.

2

E 'poco pratici da fare e un po' confuso:

  • Assicuri che il nuovo set di attributi è impostato
  • esportare i prodotti che si desidera modificare
  • Eliminare i prodotti che si sta cambiando il sito
  • Modificare l'attributo impostato sul file scaricato
  • Import cambiato presentare di nuovo
  • Aprire ogni prodotto modificato, se t i loro valori di attributo, salvarlo

O fare quello che faccio, installare questo grande estensione da Amasty http://amasty.com/mass-product-actions.html - fa cambiare un gioco da ragazzi e dà molti di più risparmiando tempo e migliorando le opzioni.

5

È anche possibile modificare l'attributo impostato direttamente nel database.

  • cercare il set di attributi ID nella tabella eav_attribute_set
  • Cambiare l'attributo impostato ID in catalog_product_entity

Naturalmente, fare attenzione quando si modificano i dati in questo modo.

+0

Quali sono gli effetti del flusso su questo? L'ID deve essere modificato nelle tabelle degli attributi EAV, ad es. varchar che fa riferimento anche a questo? –

+0

Sembra che funzioni per me. –

+0

UPDATE 'catalog_product_entity' SET' attribute_set_id' = '9' WHERE 'catalog_product_entity'.'entity_id' = 15,14; qual è l'errore in questo codice, per il suo id singolo funziona, quando ne aggiungo più di uno non è aggiornato. – Rathinam

0

Sì. Possiamo modificare l'attributo del prodotto impostato a livello di codice. Preferisco creare la massificazione nella griglia del prodotto catalogo per il prodotto con più selezioni e quindi selezionare la massa per i prodotti.

Creazione massaction in grid.php

$sets = Mage::getResourceModel('eav/entity_attribute_set_collection') 
       ->setEntityTypeFilter(Mage::getModel('catalog/product')->getResource()->getTypeId()) 
       ->load() 
       ->toOptionHash(); 

$this->getMassactionBlock()->addItem('changeattributeset', array(
       'label'=> Mage::helper('catalog')->__('Change attribute set'), 
       'url' => $block->getUrl('*/*/changeattributeset', array('_current'=>true)), 
       'additional' => array(
        'visibility' => array(
         'name' => 'attribute_set', 
         'type' => 'select', 
         'class' => 'required-entry', 
         'label' => Mage::helper('catalog')->__('Attribute Set'), 
         'values' => $sets 
        ) 
       ) 
      )); 

Creazione azione di controllo per il cambiamento attributo gruppi di prodotti selezionati.

public function changeattributesetAction() 
{ 
    $productIds = $this->getRequest()->getParam('product'); 
    $storeId = (int)$this->getRequest()->getParam('store', 0); 
    if (!is_array($productIds)) { 
     $this->_getSession()->addError($this->__('Please select product(s)')); 
    } else { 
     try { 
      foreach ($productIds as $productId) { 
       $product = Mage::getSingleton('catalog/product') 
         ->unsetData() 
         ->setStoreId($storeId) 
         ->load($productId) 
         ->setAttributeSetId($this->getRequest()->getParam('attribute_set')) 
         ->setIsMassupdate(true) 
         ->save(); 
      } 
      Mage::dispatchEvent('catalog_product_massupdate_after', array('products'=>$productIds)); 
      $this->_getSession()->addSuccess(
        $this->__('Total of %d record(s) were successfully updated', count($productIds)) 
       ); 
      } 
      catch (Exception $e) { 
       $this->_getSession()->addException($e, $e->getMessage()); 
      } 
    } 
    $this->_redirect('adminhtml/catalog_product/index/', array()); 
}