2013-06-13 11 views
6

Ich mag das von Magento gesetzt Attribute ändern. Ich suchte durch, und jeder schlug vor, das Produkt und Re-Import mit neuem Attribute zu löschen.Ändern Sie den Attributsatz des Magento-Produkts.

Ich tat das gleiche, aber nach dem Importieren der Daten konnte ich keine Produktbewertungen und zugehörigen Blogpost mit Produkt sehen.

Kann mir jemand sagen, ist es möglich, Produktbewertungen und zugehörige Blogpost nach dem erneuten Importieren des Produkts mit neuen Attributsatz zu erhalten.

Antwort

1

Sobald Sie das Produkt löschen Sie können nicht die alte Bewertung erhalten.

Sie müssen das Produkt nicht löschen. Sie können das Attribut ändern, indem Sie es bearbeiten und verwenden. Andernfalls erstellen Sie einen neuen Attributsatz und erstellen ein neues Produkt.

0

Ich verwende this extension für das Ändern von Attributsätzen.

ich verwendet, um die Erweiterung haben Sie oben empfohlen, und es ist cool. Aber der ehemalige hat mehr Funktionen.

2

Es ist knifflig zu tun und ein bisschen chaotisch:

  • Stellen Sie sicher, neues Attribut gesetzt ist eingerichtet
  • Export Produkte, die Sie
  • Löschen Sie die Produkte ändern möchten, die Sie auf die sich wandelnde werden Website
  • ändern Sie das Attribut auf die heruntergeladene Datei
  • Import wieder geändert
  • Öffnen jedes geänderte Produkt-Datei, se t ihre Attributwerte, speichern

Oder tun, was ich tun, installieren Sie diese große Erweiterung von Amasty http://amasty.com/mass-product-actions.html - es macht einen Zug zu ändern und gibt viel mehr Zeitersparnis und Verbesserung der Möglichkeiten.

5

Es ist auch möglich, den Attributsatz direkt in der Datenbank zu ändern.

  • das Attribut nachschlagen Set ID in Tabelle eav_attribute_set
  • ändert das Attribut ID gesetzt in catalog_product_entity

Natürlich vorsichtig sein, wenn die Daten auf diese Weise zu verändern.

+0

Was sind die Auswirkungen auf diese Effekte? Muss die ID in den EAV-Attributtabellen geändert werden, z. varchar, die es auch beziehen? –

+0

Es sieht aus, es funktioniert für mich. –

+0

UPDATE 'catalog_product_entity' SET' attribut_set_id' = '9' WO 'catalog_product_entity'.entity_id' = 15,14; Was ist der Fehler in diesem Code, für einzelne ID funktioniert es, wenn ich mehr als eins hinzufügen, ist es nicht update. – Rathinam

0

Ja. Wir können das Produktattribut programmgesteuert ändern. Ich bevorzuge es, im Katalogprodukt-Raster eine Massenaktion zu erstellen, um das Produkt zu multiselektieren und dann die Massenaktion für die Produkte auszuwählen.

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

Controller erstellen Aktion für Änderung Attributsätze der ausgewählten Produkte.

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()); 
} 
Verwandte Themen