Mai 19

Im Magento Backend erreicht man unter Katalog->Attribute die Verwaltung der Produktattribute und kann diese dort insbesondere für individuelle Attribut-Sets anlegen & verwalten. Jedoch hat man in diesem Bereich keinerlei Zugriff auf Kategorie, Kunden & Kunden Adress Attribute. Um dieses Manko zu beheben existiert die recht beliebte Magento Extension Pol Attribute manager die Zugriff auf genannte Bereiche gewährt.

Aktuell liegt dieses Zusatzmodul in der Version 0.9.1 vor (13. Februar 2009) & laut angegebener Kompatibilität wurden bis zum letzten veröffentlichten Release nur Magento Versionen bis 1.2.x berücksichtigt.

Klar das sich früher oder später Kompatibilitätsprobleme einschleichen, da Magento 1.2.x nun doch schon einige Tage alt ist und wir uns gegenwärtig bei 1.4er Versionen bewegen.

Kürzlich wollte Ich in einem Projekt mal wieder auf diese Erweiterung zurück greifen um individuelle Attribute nach-zusetzen. Jedoch funktionierte es in einer aktuellen Magento 1.4er Version nicht so wie erwünscht, das Modul konnte nicht genutzt werden.

Ich konnte den Fehler beheben & schildere im folgenden wie man diese Extension kompatibel zu Magento 1.4 macht.

Zunächst funktioniert die Übersichtsseite die man nach Installation des Moduls unter
“System->Manager->Manage Attributes for categories and customers” aufrufen kann.

Pol Attributes manager

Ansicht Attribute manager unter System->Manager->Manage Attributes for categories and customers

Jedoch kommt es zu einer Fehlermeldung wenn man versucht einen der 3 Bereiche aufzurufen:

Error Magento 1.4 Backend

Fehlerausgabe im Magento 1.4 Backend

Man orientiert sich an der Fehlermeldung und öffnet dei Datei
“app/code/local/Pol/Attributemanager/Block/Grid.php”

Zeile 16-36 “protected function _prepareCollection()”

protected function _prepareCollection()
  {
      $sUrl=$this->getUrl('*/*/*', array('_current'=>true));
      if (false!==strpos($sUrl,'customer')){
      		$type='customer';
      }elseif (false!==strpos($sUrl,'address')){
      		$type='customer_address';
      }elseif (false!==strpos($sUrl,'category')){
      		$type='catalog_category';
      }else{
      		$type="catalog_category";
      }
      $this->type=$type;
      $collection = Mage::getResourceModel('eav/entity_attribute_collection')
            ->setEntityTypeFilter( Mage::getModel('eav/entity')->setType($type)->getTypeId() )
            ->addVisibleFilter();

      $this->setCollection($collection);
      return parent::_prepareCollection();

  }

Um diese Fehlermeldung zu beseitigen, kommentiert man einfach an der genannten Stelle (Zeile 31) die nicht definierte Methode aus. Da der PHP Kommentar für die ganze Zeile zählt muss das Semikolon in die nächste Zeile verschoben werden.

protected function _prepareCollection()
  {
      $sUrl=$this->getUrl('*/*/*', array('_current'=>true));
      if (false!==strpos($sUrl,'customer')){
      		$type='customer';
      }elseif (false!==strpos($sUrl,'address')){
      		$type='customer_address';
      }elseif (false!==strpos($sUrl,'category')){
      		$type='catalog_category';
      }else{
      		$type="catalog_category";
      }
      $this->type=$type;
      $collection = Mage::getResourceModel('eav/entity_attribute_collection')
            ->setEntityTypeFilter( Mage::getModel('eav/entity')->setType($type)->getTypeId() )
            //->addVisibleFilter()
            ;

      $this->setCollection($collection);
      return parent::_prepareCollection();

  }

Nachdem die Datei gespeichert wurde, kann nun versucht werden wahlweise Kategorie, Kunden oder Kunden-Adress-Attribute aufzurufen. Es sollte nun keinerlei Fehlermeldung mehr kommen & man kann die Extension wie gehabt einsetzen.

Attibutemanager funktioniert unter Magento 1.4

Beachten Sie bitte das dieser Fix nicht Updatefähig ist & bei Modul-Updates wahrscheinlich mit neuen Dateien überschrieben wird.

Liebe Grüße – Daniel

Einen Kommentar hinterlassen

preload preload preload