Strona główna forum Wsparcie Tutoriale Zmiana zestawu cech dla produktu w Magento

Zmiana zestawu cech dla produktu w Magento

Czyli zrób to sam, krok po kroku...

jemoon Avatar użytkownika
Administrator

Posty: 529
Lokalizacja: Gdańsk
Gadu-Gadu: 0

witam,
Standardowo po utworzeniu produktu typu "Configurable" nie ma już potem możliwości zmiany nadanych zestawów cech, zdarza się jednak, że czasem źle wybierzemy te zestawy. Aby nie kasować produktu i aby nie tracić czasu na powtórne dodawanie lub aby hurtowo zmienić zestawy dla kilkunastu produktów na raz należy wykonać następujące czynności:
1. Otwieramy app/code/core/Mage/Adminhtml/Block/Catalog/Product/Grid.php i znajdujemy w nim następujący fragment kodu (około linii 250 - 260):

        $statuses = Mage::getSingleton('catalog/product_status')->getOptionArray();

        array_unshift($statuses, array('label'=>'', 'value'=>''));
        $this->getMassactionBlock()->addItem('status', array(
             'label'=> Mage::helper('catalog')->__('Change status'),
             'url'  => $this->getUrl('*/*/massStatus', array('_current'=>true)),
             'additional' => array(
                    'visibility' => array(
                         'name' => 'status',
                         'type' => 'select',
                         'class' => 'required-entry',
                         'label' => Mage::helper('catalog')->__('Status'),
                         'values' => $statuses
                     )
             )
        ));

poniżej dodajemy:

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

        array_unshift($statuses, array('label'=>'', 'value'=>''));
        $this->getMassactionBlock()->addItem('attribute_set', array(
             'label'=> Mage::helper('catalog')->__('Change attribute set'),
             'url'  => $this->getUrl('*/*/massAttributeSet', array('_current'=>true)),
             'additional' => array(
                    'visibility' => array(
                         'name' => 'attribute_set',
                         'type' => 'select',
                         'class' => 'required-entry',
                         'label' => Mage::helper('catalog')->__('Zmień zestaw cech'),
                         'values' => $sets
                     )
             )
        ));


2. Otwieramy app/code/core/Mage/Adminhtml/controllers/Catalog/ProductController.php i przed:
protected function _isAllowed()
    {
        return Mage::getSingleton('admin/session')->isAllowed('catalog/products');
    }

dodajemy następujący fragment kodu:

public function massAttributeSetAction()
    {
        $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()->addError($e->getMessage());
            }
        }
        $this->_redirect('*/*/', array('store'=>(int)$this->getRequest()->getParam('store', 0)));
    }
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.

Zmiana zestawu cech dla produktu w Magento

PostTeraz jest 22 gru 2024, o 13:47
Google

Posty: 427
Lokalizacja: Internet


Posty: 21
Gadu-Gadu: 0

Może mały pomysł na zmianę tego w wersji 1.2.1
W tej chwili nie występuje plik z wersji drugiej opisu o nazwie ProductController.php mamy za to plik o nazwie AttributeController.php Zrobiłem podmianę tak jak wyżej ale nie przyniosło to pożądanego efektu

jemoon Avatar użytkownika
Administrator

Posty: 529
Lokalizacja: Gdańsk
Gadu-Gadu: 0

witam,
właśnie to sprawdzałem i u mnie w 1.2.1 normalnie jest dostępny ProductController.php


Posty: 21
Gadu-Gadu: 0

Dzięki przeczyściłem cache i faktycznie działa. Nie wiem dlaczego wcześniej nie działało.
Wcześniej pisałem post o braku możliwości logowania się do panelu admina z różnych przeglądarek nie masz może jakiegoś pomysłu co może być przyczyną. Działa mi tylko w operze a tej akurat nie lubię może to dlatego ze ona najwolniej łączy z panelem ?


Posty: 428
Lokalizacja: W-wka
Gadu-Gadu: 36599

Revman napisał(a):
Dzięki przeczyściłem cache i faktycznie działa. Nie wiem dlaczego wcześniej nie działało.
Wcześniej pisałem post o braku możliwości logowania się do panelu admina z różnych przeglądarek nie masz może jakiegoś pomysłu co może być przyczyną. Działa mi tylko w operze a tej akurat nie lubię może to dlatego ze ona najwolniej łączy z panelem ?



To dziwne, pracuję na Mac-ach i Windowsach i bez problemowo pracują
- Explorer ( win)
- FF 3 ( win. mac)
- Opera ( win. mac)
- Safari (mac)
http://transit.waw.pl - Sklep oparty o Magento


Posty: 3
Gadu-Gadu: 3652968

Czy ktoś rozszyfrował to ustrojstwo w nowszych wersjach Magento? Użytkuję obecnie Magento wer. 1.4.2.0 i niestety struktura np. pliku ProductController.php jest inna.

jemoon Avatar użytkownika
Administrator

Posty: 529
Lokalizacja: Gdańsk
Gadu-Gadu: 0

witam,
Obecnie szybciej można załatwić tą kwestię instalując http://www.magentocommerce.com/magento- ... ribute-set

Używając dodatku Enhanced Grid należy jednak wyłączyć go, aby móc zmieniać cechy, ewentualnie należy pogrzebać w kodzie bo pomiędzy tymi dwoma dodatkami dochodzi do 'zderzenia' :) Gdybyś chciał korzystać z obu na raz proszę o PW.


Posty: 428
Lokalizacja: W-wka
Gadu-Gadu: 36599

Trzeba poprawić wpis w kodzie i chodzą oba :)
http://transit.waw.pl - Sklep oparty o Magento


Powrót do Tutoriale



cron