Hallöchen ihr Magento-Verrückten!

Ich bin gerade darüber gestolpert, dass Magento seit Version 1.5. auf der Produktseite bei nicht gepflegten Produktattributen ein „Nein“ bzw. „No“ anzeigt, anstatt dieses Attribut einfach auszublenden. Das tritt denke ich hauptsächlich bei Nicht-Systemattributen auf, also Attribute die ihr selbst angelegt habt – und natürlich bei allen die kein Pflichteingabefeld sind! Also noch mal: ihr habt ein Attribut (z.B. Luftdruck), welches ihr auch im Frontend anzeigen möchtet. Aber bei manchen Produkten wird dieses Attribut nicht gefüllt. Dann steht seit Version 1.5 dort eine Zeile „Luftdruck: Nein“, was extrem unschön ist!

Wie behebt ihr das? Ganz einfach:

  1. Navigiert hier hin: /app/code/core/Mage/Catalog/Block/Product/View – also tief in den Magento-Kern. Kopiert euch hier die Datei Attributes.php irgendwo auf euren Rechner.
  2. Öffnet eure lokale Kopie von Attributes.php und modifiziert sie so, dass die Variable $value vor dem einfügen in das Array nicht gesetzt wird! Dann wird sie (zumindest in Version 1.7.0.2) gar nicht erst ins Array geschrieben:
    Additional Data / Attributes in Magento
  3. Nun gibt es bei Magento eine goldene Regel: Never change the core! Sonst war die ganze Arbeit beim nächsten Update umsonst! Also legt euch folgende Ordnerstruktur an: /app/code/local/Mage/Catalog/Block/Product/View/ und schmeißt in den View-Ordner eure modifizierte Attributes.php
  4. Aktualisiert ggfls. euer Caching – und schaut euch an was passiert 🙂

Update: Mir ist aufgefallen, dass dieses Vorgehen nur bei einfachen Eingabefelder greift! Wenn ihr aber z.B. ein Attribut im Admin per Dropdown pflegen würdet, steht dort noch immer „Nein“ oder „No“. Also z.B. ein Attribute „Farbe“ welches kein Pflichtfeld ist aber im Admin beim Produkt per Dropdown ausgewählt werden kann. Pflegt ihr dieses nun bei einem Produkt nicht steht trotz obiger Änderung noch immer ein „Farbe: Nein“.
Doch auch hierfür gibt es eine Lösung:

  1. Kopiert euch die Datei /app/code/core/Mage/Eav/Model/Entity/Attribute/Frontend/Abstract.php auf euren Rechner!
  2. Öffnet sie lokal und sucht die Methode „getValue“.
  3. Ändert nun die hier grün gezeigt Zeile entsprechend der darunter geliegenden ab:
    Magento Dropdown Attribute Frontend "Nein" / "No"
  4. Hintergrund: der beim Produkt hinterlegte Wert würde in der Variable $value stehen – in unserem Beispiel ist diese Variable leer. Nach dem Methodenaufruf getOption($value) ist auch die Variable $valueOption leer – weshalb das nachfolgende Coding durchlaufen worden wäre. Dieses zieht das besagte „Nein“ zum „leeren“ Wert. Wie auch immer – wenn ihr in die IF-Bedingung noch die Überprüfung ob die Variable $value überhaupt gefüllt ist mit einbaut ist alles gut!
  5. Ladet die lokale Abstract.php in den evtl. noch anzulegenden Ordner /app/code/local/Mage/Eav/Model/Entity/Attribute/Frontend – und schaut was passiert! 🙂