Magento – überschreibt ungewollt Attribute bei “Attribute aktualisieren”

BildIn einem Shop hatten wir das Problem, dass bei der Verwendung von “Attribute aktualisieren” (Katalog > Artikel verwalten > Artikel anhaken und dann oben rechts im Dropdown “Attribute aktualisieren” wählen) auch Attribute überschrieben bzw. geleert wurden, die gar nicht angehakt worden sind.

Beispiel: Wir wollten für 10 Produkte die Mehrwertsteuer-Klasse ändern. Dafür haken wir diese in der Artikelübersicht an und wählen “Attribute aktualisieren”. Dann setzen wir das Häcken bei “Ändern” und wählen den korrekten Wert. Anschließend dann speichern.

Nun wurde aber nicht nur das gewünschte Attribut verändert sondern bei vielen anderen Attributen wurde einfach der bisher vorhandene Wert entfernt / gelöscht.

Nach näherer Betrachtung -der Backend-Ansicht- stellte sich heraus, dass bei den betreffenden Attributen zwar kein Haken bei “Ändern” gesetzt, das Feld aber dennoch aktiv war. Dies konnte man an zwei Dingen sehen:

1. sind alle anderen Felder so lange ausgegraut, wie kein Haken bei “Ändern” gesetzt ist.
2. konnte man ohne den Haken zu setzen in den Feldern etwas eintragen oder auswählen

Setzte man nun nur kurz den Haken und entfernte ihn anschließend wieder (ohne eine Änderung vorzunehmen), wurde das Feld ausgegraut und nichts wurde verändert.

Anschließend schauten wir uns den Code an und stellten fest, dass es anscheinend an einem “Read-Only”-Attribut lag, welches durch eine Extension erstellt worden war und welches nun auch in der Liste auftauchte bzw. diese durcheinanderbrachte.

Die Lösung war nun die “Read-Only”-Attribute von der “Attribute aktualisieren”-Liste auszuschließen.

Dies haben wir dadurch erreicht, dass wir die Datei Attribute.php aus dem Ordner app/code/core/Mage/Adminhtml/Helper/Catalog/Product/Edit/Action kopiert und in das Verzeichnis app/code/local/Mage/Adminhtml/Helper/Catalog/Product/Edit/Action kopiert haben. Anschließend wurde dann die Zeile

$this->_attributes->addFieldToFilter('frontend_input',array('neq' => 'label'));

hinter

if ($this->_excludedAttributes) {
$this->_attributes->addFieldToFilter('attribute_code', array('nin' => $this->_excludedAttributes));
}

und vor

// check product type apply to limitation and remove attributes that impossible to change in mass-update

eingefügt.

Dies verhindert, dass die störende Attribut-Art auftaucht und die Funktion “Attribute aktualisieren” durcheinander bringt.

Genutzt in Magento Versionen 1.9 Kommentare? Ergänzungen? Hinweise? Gerne!

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

Leave a Reply

Your email address will not be published. Required fields are marked *