In 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!